VIM:grep搜索文本文件中列出的所有文件

VIM:grep搜索文本文件中列出的所有文件,vim,grep,Vim,Grep,我有一个完整的FPGA项目层次结构。我编写了一个passer,它检查“Vivado/ISE”项目文件,并返回一个包含项目用户所有源文件列表的文件(然后在该列表上运行ctag) 我希望能够从vim 7.4中搜索此文件列表,而无需通过FPGA库进行整个递归搜索。我可以在linux命令行中使用以下命令: cat ./files.txt | xargs grep -Hn my_function 其中./files.txt包含我要搜索的文件列表。然而,我希望能够使用vim的内部grep函数。我还希望能够

我有一个完整的FPGA项目层次结构。我编写了一个passer,它检查“Vivado/ISE”项目文件,并返回一个包含项目用户所有源文件列表的文件(然后在该列表上运行ctag)

我希望能够从vim 7.4中搜索此文件列表,而无需通过FPGA库进行整个递归搜索。我可以在linux命令行中使用以下命令:

cat ./files.txt | xargs grep -Hn my_function
其中./files.txt包含我要搜索的文件列表。然而,我希望能够使用vim的内部grep函数。我还希望能够在Windows和Linux上运行它


有没有一种简单的方法可以将文件列表(包含在文件中)传递给vim的grep ex函数?

如果您已经用
vim`如果您已经用

vim`您可能应该使用如下插件。但如果您坚持单独使用Vim,您可以这样做:

function! Grep(what, where)
    exec join(extend(['vimgrep', a:what],
        \ map(filter(readfile(a:where), 'v:val !=# "" && filereadable(v:val)'),
        \ 'fnameescape(v:val)')))
    copen
endfunction

command! -nargs=+ Grep call Grep(<f-args>)
函数!格雷普(什么,哪里)
execjoin(扩展(['vimgrep',a:what],
\映射(过滤器(readfile(a:where),'v:val!=#”“&&filereadable(v:val)'),
\“fnameescape(v:val)”)
科本
端功能
命令-nargs=+Grep call Grep()

然后您只需调用
:Grep/pattern/filelist
,而不是
:vimgrep/pattern/…

,您可能应该使用这样的插件。但如果您坚持单独使用Vim,您可以这样做:

function! Grep(what, where)
    exec join(extend(['vimgrep', a:what],
        \ map(filter(readfile(a:where), 'v:val !=# "" && filereadable(v:val)'),
        \ 'fnameescape(v:val)')))
    copen
endfunction

command! -nargs=+ Grep call Grep(<f-args>)
函数!格雷普(什么,哪里)
execjoin(扩展(['vimgrep',a:what],
\映射(过滤器(readfile(a:where),'v:val!=#”“&&filereadable(v:val)'),
\“fnameescape(v:val)”)
科本
端功能
命令-nargs=+Grep call Grep()

然后您只需调用
:Grep/pattern/filelist
,而不是
:vimgrep/pattern/…

第一步,用列表中的所有文件填充参数列表:

" in UNIX-like environments
:args `cat files.txt`

" in Windows
:args `type files.txt`
第二步,在参数列表中搜索
模式

:vim pattern ##

第一步,用列表中的所有文件填充参数列表:

" in UNIX-like environments
:args `cat files.txt`

" in Windows
:args `type files.txt`
第二步,在参数列表中搜索
模式

:vim pattern ##

当你指的是Windows和Linux的
时,你指的是Windows的
bash
?伊尼安:我是在Win10和多种风格的Linux下开发的。我确实在Windows下使用Cygwin,但理想情况下,我想要一些根本不使用bash的东西。当你指的是Windows和Linux的
bash
,你是指Windows的
bash
。我确实在Windows下使用Cygwin,但理想情况下我想要一些根本不使用bash的东西“对不起。编辑删去了我输入的引文,围绕着Vim`谢谢,这似乎很有效,但我不断收到垃圾邮件,其中没有找到模式。是否有方法抑制模式未找到消息。因为这让我很恼火,因为我找不到这个模式“对不起。编辑删去了我输入的引文,围绕着Vim`谢谢,这似乎很有效,但我不断收到垃圾邮件,其中没有找到模式。是否有方法抑制模式未找到消息。因为它使它非常恼人的发现模式是我真的喜欢你的答案!但我更喜欢Satos的回答,因为它运行速度更快,不需要cat。多谢各位。非常有帮助!好吧,如果这让你感到困扰的话,你可以在windows上使用
键入
,而不是
。我真的很喜欢你的答案!但我更喜欢Satos的回答,因为它运行速度更快,不需要cat。多谢各位。非常有帮助!好吧,如果你感到困扰的话,你可以在windows上使用
type
,而不是
cat