vim多文件查找

在linux平台上,有很多优秀的shell命令组合来做多文件查找/替换,比如这些命令:find,sed,grep,awk,perl。但其他平台比如windows上就没那么方便了,这时候vim内置的多文件查找命令就有用武之地了,虽然比起外部命令来稍微慢了一点点儿。

这个vim内置命令就是vimgrep,有两种基本的使用方式:

1
2
:vim\[grep\]\[!\] /{pattern}/\[g\]\[j\] {file} ...
:vim\[grep\]\[!\] {pattern} {file} ...

file部分支持通配符,代表当前目录,**代表当前目录及其子目录(递归),比如/.c代表当前目录下的c源程序文件,**/.c代表当前目录及其递归子目录下的所有源程序文件。file部分可以指定多次。

g(global)是全局标志,没有g,每行只会匹配一次,如果有g,则匹配行内所有符合的pattern,也就是行可以会多次被添加到quickfix列表。
j(jump)是跳转标志,没有j,vim会跳转到第一个匹配,如果有j,则只更新

以下命令查看匹配结果:

1
2
3
:cn\[ext\] 下一个结果
:cp\[revious\] 上一个结果
:cw\[indow\] quickfix窗口,结果文件列表

更详细的用法参见:help vimgrep 和下面的refs。

References:
[1]使用vimgrep查找文件
[2]vi/vim使用进阶: 剑不离手 – quickfix

===
[erq]