使 VIM 将当前文件夹视为根目录
Make VIM to consider current folder the root
我已经知道如何退出 Vim,现在我想知道是否可以强制 Vim 在当前目录中搜索 '/somedir/file.js' 按 gf
,好像是'./somedir/file.js'?
UPD:question 一般如何设置路径,但它无助于使 /myfolder/
指向我想要的某个特定文件夹。 /myfolder/
始终是当前卷根目录的绝对路径。
Vim 始终将以 /
开头的文件名计为文件系统根目录,因为
你观察到。如果不是这种情况,if 'isf'
(选项
控制什么被认为是文件名)接受了一个正则表达式,这将是
更容易解决。但是,如果您从 'isf'
中删除 /
,则没有斜杠
不再被视为文件名的一部分。
我能想到的唯一解决办法是使用可视模式
gf
。您可能知道,如果您对文本 select 进行可视化编辑并使用 gf
然后将考虑视觉 selection,而不是 'isf'
比赛。那么我们需要做的就是可视化select下的文件名
游标不包括可能的前导 /
。这可以在地图中解决,如果
你不介意弄乱你之前的搜索:
nnoremap <silent> gf :let @/ = substitute(expand('<cfile>'), '^/', '', '')
\ <bar>normal gngf<cr>
这会覆盖您的 gf
以将搜索设置为光标下的文件名
(expand()
),减去前导斜线(如果有)(substitute()
),然后是 运行
正常命令 gn
其中 select 是匹配项,最后是
原创 gf
.
如果你想保存你之前的搜索和恢复,你可以很容易地
创建一个函数来包装这一切。注意我也写了这是两个
只是因为我是排长队的公敌。但如果你只是
想测试它删除 \
并写在一行中。
现在您的 gf
会将 /file
解释为 file
。因此,如果你在
正确的目录这将起作用。如果您需要在不同的地方搜索
目录,您要查找的选项是 'path'
,或 'pa'
短的。您可以给出要搜索的目录列表。很像 Unix
shell 的 $PATH
。被逗号隔开。从帮助(一定要阅读
休息一下,:h 'pa
):
This is a list of directories which will be searched when using the
gf
, [f
, ]f
, ^Wf
, :find
, :sfind
, :tabfind
and other
commands, provided that the file being searched for has a relative
path (not starting with "/", "./" or "../"). The directories in the
'path' option may be relative or absolute.
总之,要在您的项目中使用它,请根据需要设置 'path'
如您所愿并启用此地图。或者 运行 全部自动在一个
:autocmd
或类似的东西。你没有改变的根
按照你最初的建议进行项目,但你有点模仿这个
在 'path'
中包含所需的目录,然后强制 gf
忽略前导 /
.
我已经知道如何退出 Vim,现在我想知道是否可以强制 Vim 在当前目录中搜索 '/somedir/file.js' 按 gf
,好像是'./somedir/file.js'?
UPD:question 一般如何设置路径,但它无助于使 /myfolder/
指向我想要的某个特定文件夹。 /myfolder/
始终是当前卷根目录的绝对路径。
Vim 始终将以 /
开头的文件名计为文件系统根目录,因为
你观察到。如果不是这种情况,if 'isf'
(选项
控制什么被认为是文件名)接受了一个正则表达式,这将是
更容易解决。但是,如果您从 'isf'
中删除 /
,则没有斜杠
不再被视为文件名的一部分。
我能想到的唯一解决办法是使用可视模式
gf
。您可能知道,如果您对文本 select 进行可视化编辑并使用 gf
然后将考虑视觉 selection,而不是 'isf'
比赛。那么我们需要做的就是可视化select下的文件名
游标不包括可能的前导 /
。这可以在地图中解决,如果
你不介意弄乱你之前的搜索:
nnoremap <silent> gf :let @/ = substitute(expand('<cfile>'), '^/', '', '')
\ <bar>normal gngf<cr>
这会覆盖您的 gf
以将搜索设置为光标下的文件名
(expand()
),减去前导斜线(如果有)(substitute()
),然后是 运行
正常命令 gn
其中 select 是匹配项,最后是
原创 gf
.
如果你想保存你之前的搜索和恢复,你可以很容易地
创建一个函数来包装这一切。注意我也写了这是两个
只是因为我是排长队的公敌。但如果你只是
想测试它删除 \
并写在一行中。
现在您的 gf
会将 /file
解释为 file
。因此,如果你在
正确的目录这将起作用。如果您需要在不同的地方搜索
目录,您要查找的选项是 'path'
,或 'pa'
短的。您可以给出要搜索的目录列表。很像 Unix
shell 的 $PATH
。被逗号隔开。从帮助(一定要阅读
休息一下,:h 'pa
):
This is a list of directories which will be searched when using the
gf
,[f
,]f
,^Wf
,:find
,:sfind
,:tabfind
and other commands, provided that the file being searched for has a relative path (not starting with "/", "./" or "../"). The directories in the 'path' option may be relative or absolute.
总之,要在您的项目中使用它,请根据需要设置 'path'
如您所愿并启用此地图。或者 运行 全部自动在一个
:autocmd
或类似的东西。你没有改变的根
按照你最初的建议进行项目,但你有点模仿这个
在 'path'
中包含所需的目录,然后强制 gf
忽略前导 /
.