我当前在~/src
目录,可以通过执行git grep _pattern_
命令获取所有匹配该pattern的*.cpp
或*.hpp
文件列表。
现在我想遍历所有匹配该pattern的文件并对它们进行编辑。那么我该如何在Vim中实现呢?(基本上,我希望Vim能够像git grep一样遍历我的目录,并跳转到正确的文件)
我当前在~/src
目录,可以通过执行git grep _pattern_
命令获取所有匹配该pattern的*.cpp
或*.hpp
文件列表。
现在我想遍历所有匹配该pattern的文件并对它们进行编辑。那么我该如何在Vim中实现呢?(基本上,我希望Vim能够像git grep一样遍历我的目录,并跳转到正确的文件)
vim `git grep --name-only <your expression>`
$(command)
语法而不是反引号\
command``语法。前者更清晰且可嵌套,而后者在涉及引号和撇号时会变得混乱,并且无法嵌套。 - Matt在bash中,你可以这样做
vim $(grep -l _pattern_ *.cpp *.hpp)
但那是bash的特性,不是vim的特性。
:args *.cpp *.hpp
这将打开当前目录中的所有cpp和hpp文件。
您也可以使用任何可用于:grep的文件路径扩展。
通过正确使用快速修复列表,您甚至可以立即跳转到正确的行(使用:help quickfix
命令,例如:cn
或:cw
)。因此,如果您正在使用bash或zsh:
vim -q <(git grep foo)
git grep...
并解释结果。这样,你就可以运行命令:grep并将结果读入快速修复缓冲区-有关更多信息,请参见:h quickfix
。然后,你可以使用:cnext和:cprev或:copen逐步查看它们,或者在文件列表上放置光标并按回车键打开该文件进行编辑。