6

我喜欢 Visual Studio 的一项功能是仅在打开的文件中进行搜索。例如,如果我最近对某些文件进行了更改并且我想跟踪这些更改,我可能会搜索某个单词,但只在这些文件中搜索以避免获得大量必要匹配项。

用 Vim 可以吗?!我感兴趣的是能够打开我更改的文件以便使用:

gvim `git diff --name-only`

然后在这些文件中搜索我想要的内容。

4

2 回答 2

2

一个很好的方法是使用 vim 的内部 grep 命令 ( :vim):

:vim /pattern/ `git diff --name-only`
:copen

这将打开一个小窗口(称为quickfix),其中包含用于打开相应文件的搜索结果和链接(它们不必打开)。

于 2011-02-27T08:47:15.350 回答
1

如果您希望 vim 在其自己的缓冲区中打开与您的差异匹配的文件的所有文件,您可以尝试以下操作:

gvim $(grep -l pattern $(git diff --relative --name-only))

git diff --relative --name-only显示索引中更改的文件,但文件名相对于当前工作目录。

grep -l pattern <list of files>将报告包含pattern. (请注意,模式必须存在于文件中,而不是git diff输出中。)

POSIX$()代替反引号使得使用嵌套命令成为可能。

于 2011-02-27T09:12:26.770 回答