:vimgrep
看起来真的很有用.
以下是如何使用它:
:vim[grep][!] /{pattern}/[g][j] {file} ...
:help
说你可以用glob {file}
来命名*.c
当前目录.我可能已经用一个足够复杂的文件列表启动了Vim,我不想手动输入它{file}
,除了Vim已经知道这些文件是什么.
我想做的是vimgrep任何:
:args
:files
:buffers
我将使用哪些变量来代替命令中的{file}
任何列表vimgrep
?
你不能把这些命令中的结果捕获到register(:h :redir
)中,然后将其插回到:vimgrep
call(带a :exe
)中.
就像是:
:exe "vimgrep/pattern/ " . lh#askvim#Exe(':args')
笔记:
lh #askvim #exe只是一个包装器:redir
; 真的很复杂
其中一些结果可能需要一些处理(参见:args
添加方括号)
有时是返回准确的功能,你在找什么,看到join(argv(), ' ')
的:args
情况下,
关于:缓冲区,可能是这样的:
.
function BuffersList() let all = range(0, bufnr('$')) let res = [] for b in all if buflisted(b) call add(res, bufname(b)) endif endfor return res endfunction :exe 'vimgrep/pattern/ '.join(BuffersList(),' ')
你可以这样做:
:bufdo vimgrep /pattern/ %
%替换缓冲区名称.