vimgrep根据vim的路径变量

时间:2018-06-22 11:28:51

标签: vim vimgrep

我通常在多位置项目中工作,其中源文件分布在不同的服务器,数据库等之间。我通常要做的是将这些位置添加到vim的路径中,例如,我可以将“ gf”添加到这些文件中。

使用“:vimgrep”触发搜索以查找字符串时,是否可以以某种方式指定不在当前位置而是在path指定的所有级别上执行搜索?

我目前唯一的选择是

a)创建一个带有指向不同源代码的符号链接的文件夹,然后从此处启动vim

b)在模式表达式之后手动将位置添加到vimgrep命令

1 个答案:

答案 0 :(得分:0)

您可以实现类似searchsavvy's ListGrep的方法,但是不必对每个a:list进行vimgrepadd,而是对路径中的每个元素进行递归处理。大概是这样的:

...
call setqflist([])
for path in split(&path, ",")
    " Recursively (**) grep each path and add it to quickfix.
    exec 'silent! vimgrepadd/' . a:query . '/gj '. path .'/**'
endfor

或者,您可以使用:grep命令(对于大树来说可能更快,但是需要用于带有空格的路径):

function! GrepInPath(query)
    exec ':grep '. a:query .' -R '. join(split(&path, ","), " ")
endf

(未经测试。)


如果我是您,则每次同步时都会生成所有文件的列表。您可以使用csearch并使用notgrep,它将与Unite's file_list source一起使用。