我的FPGA项目有一个计算项目层次结构。我写了一个传递器来检查“Vivado / ISE”项目文件,并返回一个文件,其中包含项目用户的所有源文件列表(然后我在此列表上运行ctags)。
我希望能够从vim 7.4搜索这个文件列表,而无需通过FPGA库进行整个递归搜索。我可以使用类似的命令从linux命令行执行此操作:
cat ./files.txt | xargs grep -Hn my_function
其中./files.txt包含我要搜索的文件列表。但是我希望能够使用vim的内部grep函数。我也希望能够从Windows和Linux运行它。
是否有一种简单的方法可以将文件列表(包含在文件中)传递给vim的grep ex函数?
答案 0 :(得分:2)
您应该使用CtrlSF之类的插件。但如果你坚持单独使用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>)
然后,您只需拨打:Grep /pattern/ filelist
,而不是:vimgrep /pattern/ ...
。
答案 1 :(得分:2)
第一步,使用列表中的所有文件填充参数列表:
" in UNIX-like environments
:args `cat files.txt`
" in Windows
:args `type files.txt`
第二步,在参数列表中搜索pattern
:
:vim pattern ##
答案 2 :(得分:1)
如果您已打开Vim中的所有文件,例如:
vim `<files.txt`
- 然后您可以使用(例如)
:bufdo g/my_function/
如果您:set nu
,您将按行收到行号
grep -nHth