2012-09-21 157 views

回答

23

不,你不需要需要任何插件。默认:vimgrep(或:vim)就是你所有的需要

搜索foo在每个文件在当前目录:在每一个JavaScript文件

:vim foo *.js | cw 

搜索foo

:vim foo * | cw 

搜索foo在每一个JavaScript文件在当前目录当前目录递归:

:vim foo **/*.js | cw 

在当前目录下的每个文件搜索当前词:

:vim <C-r><C-w> * | cw 
:vim <cword> * | cw 

(编辑:使用:cw[indow]代替:copen

+0

看起来不错,但有没有办法来打开发现一个文件结果没有集中缓冲区? –

+0

当然。请参阅':h quickfix'。例如':cc5'跳到错误号5,':cn'跳到下一个错误,':cN'或':cp'跳到前面的错误... – romainl

+0

明白了,谢谢! –

9

听起来像是你需要ack.vim

这个插件是用于Perl模块应用::确认前。 Ack可以用作grep的99%使用的替代品。这个插件将允许你从vim运行ack,并在分割窗口中显示结果。

用法:

:Ack [options] {pattern} [{directory}] 
Search recursively in {directory} (which defaults to the current directory) for the {pattern}. 

包含搜索项的文件将在分割窗口在每次出现时所列,用发生的行号沿,一次。此窗口中的[Enter]行将打开文件,并将光标放在匹配行上。

5

:grep Vim命令代表所述搜索到外部grep工具(或类似ack兼容替代方案中,经由'grepprg'设置)。或者,您可以使用:vimgrep,它在Vim中执行搜索。这允许使用相同的Vim风格的正则表达式和glob模式(例如**/),但它通常比较慢,因为每个文件都被读入Vim缓冲区。

这两个命令都会在quickfix窗口中显示结果,您可以从中导航到匹配项。

你并不需要为这个任何插件,虽然有几个可用的尝试,使操作更简单或支持不同的搜索命令(例如已经提到ack.vim)。