使VIM考虑当前文件夹的根目录

时间:2017-03-06 11:59:57

标签: vim path editor

我已经知道如何退出Vim了,现在我想知道当你按下gf时,无论如何都可以强制Vim搜索当前目录中的'/somedir/file.js',好像它是'。 /somedir/file.js'?

UPD:一般来说question如何设置路径,但是/myfolder/指向我想要的某个文件夹没有帮助。 /myfolder/始终是当前卷根的绝对路径。

1 个答案:

答案 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 忽略前导/