使用set option = value时,vim中的文件名扩展

时间:2012-05-14 15:59:37

标签: vim

我正在尝试向vim添加autocmd,只要我在某个子目录中打开文件并设置搜索路径,就会执行该操作。不幸的是,路径名扩展似乎不适用于set命令。

具体来说,我希望在我的vimrc中有这样的一行:

setlocal path+=**;%:p:h

但这只会给我字面意义。只是呼叫expand()也不起作用。有没有办法让变量扩展在这里工作?

3 个答案:

答案 0 :(得分:4)

怎么样:

execute 'setlocal path +=**;' . fnameescape(expand('%:p:h'))

答案 1 :(得分:3)

不需要扩展当前文件的目录;只需将.添加到path即可。来自帮助:

  
      
  • 要相对于当前文件的目录进行搜索,请使用:
      :set path=.
  •   

答案 2 :(得分:2)

使用

let &l:path.=(empty(&l:path)?(''):(',')).'**;'.escape(expand('%:p:h'), ',\*; ')

。这比使用:execute 'setlocal path'更清晰,特别是知道fnameescape()旨在逃避命令的路径,而不是选项,我可以说在这里使用它并不是真的安全:它肯定不会去转义逗号和分号并为空格添加额外的转义(一个用于转义为:set,一个用于选项本身)。 (empty(&l:path)?(''):(','))来模仿set+=的行为。