我喜欢 Visual Studio 的一项功能是仅在打开的文件中进行搜索。例如,如果我最近对某些文件进行了更改并且我想跟踪这些更改,我可能会搜索某个单词,但只在这些文件中搜索以避免获得大量必要匹配项。
用 Vim 可以吗?!我感兴趣的是能够打开我更改的文件以便使用:
gvim `git diff --name-only`
然后在这些文件中搜索我想要的内容。
我喜欢 Visual Studio 的一项功能是仅在打开的文件中进行搜索。例如,如果我最近对某些文件进行了更改并且我想跟踪这些更改,我可能会搜索某个单词,但只在这些文件中搜索以避免获得大量必要匹配项。
用 Vim 可以吗?!我感兴趣的是能够打开我更改的文件以便使用:
gvim `git diff --name-only`
然后在这些文件中搜索我想要的内容。
一个很好的方法是使用 vim 的内部 grep 命令 ( :vim
):
:vim /pattern/ `git diff --name-only`
:copen
这将打开一个小窗口(称为quickfix
),其中包含用于打开相应文件的搜索结果和链接(它们不必打开)。
如果您希望 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$()
代替反引号使得使用嵌套命令成为可能。