你如何searchVim中的所有源代码?

在使用Vim的时候,给一个充满代码的目录(例如〜/ trunk /)和一些子目录,是否有办法在整个源代码中grep /search文本/正则expression式的实例?

目前我使用:

:lcd ~/trunk :grep "pattern" *.py */*.py */*/*.py */*/*/*.py 

(很明显,我将这限制在Python文件中,这是一个不同的问题,但值得注意的是,理想情况下,我想将search范围限制为具有特定扩展名的文件。

 :vimgrep "pattern" ~/trunk/**/*.py :copen 20 

如果你有一个很大的项目,我build议你使用cscope和vim插件 。 这里是一个旨在处理大项目: SourceCodeObedience

有一个简单的说明如何使用SourceCodeObedience grep文本 。

我直接使用grep。

 grep -IirlZ "pattern" .|xargs -0 vim -I: ignore binary -i: ignore case -r: recursive -l: print file name only -Z: print \0 after each file name 

您可能想在vim文档中查看:vimgrep:grep:vimgrep使用vim自己的模式searchfunction,并将所有文件读入vim缓冲区。 :grep默认情况下, :grep链接到系统上的外部grep实用程序,但可以通过设置grepprg选项来更改行为。 以下是在线文档的链接:

http://vimdoc.sourceforge.net/htmldoc/quickfix.html#grep

有更多的信息,以及在Vim Tips Wiki中的“在Vim中查找文件”中的一些其他选项:

http://vim.wikia.com/wiki/Find_in_files_within_Vim

你可以使用:vimgrep ie:

  :vimgrep / pattern / ** / *。py

检查这个Vim提示:

  • 在Vim中查找文件

还要看看grep.vim ,这是一个插件,它将grep,fgrep,egrep和agrep工具与Vim集成在一起,并允许您在一个或多个文件中search一个模式并跳转到它们…

grepprg设置为Ack ,然后使用:grep通过Ack进行search。

或者使用ctags。

Ag是recursionsearch模式的好select。

https://github.com/rking/ag.vim

您可以使用ctags生成源代码索引,然后VIM可以使用它来无缝地浏览您的代码库。 它的源代码意识到,你可以直接跳到方法声明等

您需要经常重新生成ctags文件,但是您可以将其作为make过程的一部分。 它应该是相当快的,除非你的代码基地是相当大的。