Vim在文件夹中搜索文本

时间:2012-09-21 07:46:07

标签: vim vim-plugin

有没有办法在文件夹中搜索某些文本并在Vim的单独缓冲区中显示搜索结果? (与Sublime Text Ctrl + Shift + F结果一样)

3 个答案:

答案 0 :(得分:23)

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

在当前目录的每个文件中搜索foo

:vim foo * | cw

在当前目录中的每个JavaScript文件中搜索foo

:vim foo *.js | cw

以递归方式搜索当前目录中的每个JavaScript文件中的foo

:vim foo **/*.js | cw

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

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

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

答案 1 :(得分:9)

听起来你需要ack.vim

  

这个插件是Perl模块App :: Ack的前端。 Ack可以替代99%的grep用途。这个插件允许你从vim运行ack,并在分割窗口中显示结果。

用法:

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

包含搜索词的文件将在拆分窗口中列出,并且每次出现一次。在此窗口的一行上的[Enter]将打开文件,并将光标放在匹配的行上。

答案 2 :(得分:5)

:grep Vim命令将搜索委托给外部grep工具(或ack之类的兼容替代工具,通过'grepprg'设置)。或者,您可以使用:vimgrep,在Vim中执行搜索。这允许使用相同的Vim样式的正则表达式和glob模式(如**/),但它通常较慢,因为每个文件都被读入Vim缓冲区。

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

您不需要任何插件,但有几个可用于尝试使处理更简单或支持不同的搜索命令(例如已经提到的 ack.vim )。