打开与Vim中某个模式匹配的所有文件

时间:2010-01-31 21:23:08

标签: vim grep

我在~/src。我可以git grep _pattern_获取与此模式匹配的所有*.cpp*.hpp个文件的列表。

现在,我想查看与模式匹配的所有文件并对其进行编辑。我怎么在Vim中这样做? (基本上,我希望Vim像git grep一样浏览我的目录,然后跳转到正确的文件。)

5 个答案:

答案 0 :(得分:13)

您可以使用单个引号(也是unix shell功能),例如:

vim `git grep --name-only <your expression>`

答案 1 :(得分:8)

在bash中,你可以做到

vim $(grep -l _pattern_ *.cpp *.hpp)

但这是一个bash功能,而不是vim功能。

答案 2 :(得分:5)

你可以使用args ex命令:

:args *.cpp *.hpp

这将打开当前目录中的所有cpp和hpp文件。

您可以使用任何可用的文件路径扩展:grep。

答案 3 :(得分:2)

您可以设置grepprg和grepformat选项以运行git grep...并解释结果。然后,这将允许您运行命令:grep并将结果读入quickfix缓冲区 - 有关详细信息,请参阅:h quickfix。然后,您可以使用:cnext和:cprev,或者:copen来打开一个带有文件列表的单独窗口 - 将光标放在文件名上,按回车键将打开该文件进行编辑。

这比Zoran和ammoQ的建议更有优势的是,在您想要编辑它们之前,它不会将文件读入内存。他们的建议可能会同时将数百个文件加载到内存中,这可能是管理的噩梦。它也是跨平台的,所以应该在Windows上运行而不必使用第三方shell,例如cygwin bash。

答案 4 :(得分:1)

通过正确使用quickfix列表,您甚至可以立即转到右侧(使用:help quickfix命令,例如:cn:cw)。所以,如果您使用的是bash或zsh:

vim -q <(git grep foo)