VIM搜索多个已关闭的文件

时间:2012-01-08 03:33:05

标签: search vim

我不时喜欢做的一件事是快速搜索我正在处理的目录并查找对特定字符串的所有引用,特别是在调试来自其他人的代码时。 VIM仍然无法进行此类搜索吗?是否可以直接使用普通终端进行替换?

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

4 个答案:

答案 0 :(得分:5)

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

:vimgrep "foo" **/*.php

另一个选项是命令:grep,它实际调用grep程序(或grepprg设置的任何内容)。它还将结果放在quickfix窗口中以便于导航。但是,这需要您的系统上有grep

答案 1 :(得分:4)

vim是一名编辑,而不是文件搜索者。然而,调用shell并运行'grep'非常简单。假设你在Unix-ish环境中(TextMate - MacOs?)在命令模式下,点击ctrl-z然后你将进入shell提示符,然后执行

grep somestring *.c

你将在任何C源文件中获得'somestring'的所有匹配。

一旦完成grepping,只需执行fg(前景)命令并繁荣 - 返回VIM。

答案 2 :(得分:1)

vimgrep会起作用,但是如果源恰好在Git中,那么你可以使用tpope优秀的https://github.com/tpope/vim-fugitive插件,它会暴露出{g} grep挂起的:Ggrep以获得更大的灵活性。 / p>

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

答案 3 :(得分:0)

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

请参阅vim文档:

     :help tagsrch

或者:

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