2012-01-08 95 views
2

我喜欢不时做的一件事就是快速搜索我正在处理的目录并找到对特定字符串的所有引用,特别是在从其他人调试代码时。 VIM是否仍然无法进行此类搜索?有没有替代方案直接与普通终端做到这一点?VIM搜索多个关闭的文件

ATM(因为我还在学习VIM)我在TextMate中进行搜索并找到字符串。

+0

我刚刚发现这个插件可以追溯到2007年?任何新的或足够稳定的使用? http://www.vim.org/scripts/script.php?script_id=1813 – 2012-01-08 03:35:07

+1

请参阅以下非常类似的问题:“[将通过命令获取的一组文件加载到Vim缓冲区中](http://stackoverflow.com/ (Vim:q/6870139/254635)“,”[使用vim重构目录中的类/方法/字符串的高效方法](http://stackoverflow.com/q/7203963/254635)“,”[Vim:我怎么能在整个项目/文件夹中递归搜索单词?](http://stackoverflow.com/q/7950558/254635)“。 – 2012-01-08 06:03:14

回答

5

您可以使用vim命令:vimgrep。这将搜索指定文件中的模式,并将结果放入quickfix窗口,然后您可以使用该窗口跳转到特定的匹配项。因此,例如在每一个.php文件在当前目录中搜索foo递归你会做

:vimgrep "foo" **/*.php 

另一种选择是命令:grep实际上调用grep程序(或任何grepprg设为)。它还会将结果放在quickfix窗口中,以便轻松导航。但是,这要求您的系统上有grep

+0

美丽,正是我在找的东西。 – 2012-01-09 05:08:18

4

vim的编辑器,不是真正的文件搜索器。然而,调用shell并运行'grep'非常简单。假设你是一个Unix的十岁上下的环境(TextMate的? - Mac系统)在命令模式下,按Ctrl-Z,你会在shell提示符,然后做

grep somestring *.c 

,你会得到所有匹配任何C源文件中的“somestring”。

一旦完成grepping,只要做一个fg(前景)命令和繁荣 - 回到VIM。

+1

不错的主意,我喜欢你的建议,它运作良好。更好的时候,我可以做grep somestring *。*并返回文件名旁边的所有实例。 – 2012-01-09 05:00:54

1

vimgrep的工作,但如果源恰好是在Git中,那么你可以使用tpope的优秀https://github.com/tpope/vim-fugitive插件,它暴露了:Ggrep挂接在GIT中grep的更大的灵活性。

如果它是你正在寻找的特定实体(函数,变量等),与ctags的集成也可能是你感兴趣的。

0

听起来像你可能想看看vim标签搜索功能结合ctags。 ctags是一个实用程序,可用于为源代码(完整项目树,而不仅仅是目录)生成各种语言对象的索引(标记文件)。在vim中,标签是可以跳转到或搜索的标识符。

见VIM文档:

 :help tagsrch 

或者:

http://vimdoc.sourceforge.net/htmldoc/tagsrch.html#ctags