你如何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中查找文件”中的一些其他选项:
你可以使用:vimgrep ie:
:vimgrep / pattern / ** / *。py
检查这个Vim提示:
- 在Vim中查找文件
还要看看grep.vim ,这是一个插件,它将grep,fgrep,egrep和agrep工具与Vim集成在一起,并允许您在一个或多个文件中search一个模式并跳转到它们…
将grepprg
设置为Ack ,然后使用:grep
通过Ack进行search。
或者使用ctags。
Ag
是recursionsearch模式的好select。
您可以使用ctags生成源代码索引,然后VIM可以使用它来无缝地浏览您的代码库。 它的源代码意识到,你可以直接跳到方法声明等
您需要经常重新生成ctags文件,但是您可以将其作为make过程的一部分。 它应该是相当快的,除非你的代码基地是相当大的。