我已经知道如何退出Vim了,现在我想知道当你按下gf
时,无论如何都可以强制Vim搜索当前目录中的'/somedir/file.js',好像它是'。 /somedir/file.js'?
UPD:一般来说question如何设置路径,但是/myfolder/
指向我想要的某个文件夹没有帮助。 /myfolder/
始终是当前卷根的绝对路径。
答案 0 :(得分:1)
Vim将以/
开头的文件名统计为文件系统root,as
你观察到了如果不是这样的话,那就是'isf'
(选项是{。}}
控制什么被视为文件名)接受正则表达式,这将是
更容易解决。但是,如果从/
中删除'isf'
,则不会有斜杠
被视为文件名的一部分。
我能想到的唯一解决方案是使用可视模式
gf
。如您所知,如果您直观地选择了文本并使用gf
然后将考虑视觉选择,而不是'isf'
比赛。然后,我们需要做的就是在视觉上选择文件名
光标排除可能的前导/
。这可以在地图中解决,如果
你不介意弄乱你以前的搜索:
nnoremap <silent> gf :let @/ = substitute(expand('<cfile>'), '^/', '', '')
\ <bar>normal gngf<cr>
这将覆盖您的gf
以将搜索设置为光标下的文件名
(expand()
),减去前导斜杠(substitute()
)然后运行
正常命令gn
选择匹配,最后选择匹配
原gf
。
如果您想保存以前的搜索和还原,则可以轻松完成
创建一个函数来包装这一切。请注意,我也写了两个
我只是因为我是长队的敌人。但如果你只是
想要测试它删除\
并写入一行。
现在,您的gf
会将/file
解释为file
。因此,如果你在
正确的目录,这将工作。如果您需要搜索其他内容
目录,您要查找的选项为'path'
或'pa'
短。您可以提供要搜索的目录列表。很像Unix
贝尔的$PATH
。被逗号隔开。从帮助(一定要阅读
用:h 'pa
)来安息自己:
这是使用时将搜索的目录列表
gf
,[f
,]f
,^Wf
,:find
,:sfind
,:tabfind
等 命令,只要搜索的文件具有相对性 路径(不以&#34; /&#34;,&#34; ./"或&#34; ../")开头。中的目录 &#39;路径&#39;选项可以是相对的或绝对的。
总之,要在项目中使用此功能,请根据需要设置'path'
如您所愿并启用此地图。或者在a中自动运行它
:autocmd
或类似的东西。你不是在改变根源
你最初建议的项目,但你有点仿效
在'path'
中包含所需目录,然后强制gf
忽略前导/
。