Grep for String 在对应行打开

Grep for String and open at the corresponding line

我在使用 grep.

获得的几行中的几个文件中多次出现特定字符串
$ grep -rn --include="*.cpp" mystring
lib/mlib/actionbuttonrule.cpp:300:  mystring Foobar...
lib/mlib/actionbuttonrule.cpp:314:  other mystring
lib/mlib/item.cpp:3025:             /* mystring**/
lib/mlib/item.cpp:3082:             mystring Foobar...
lib/mlib/item.cpp:3095:             Foo mystring bar

我想在相应的行中依次打开这些文件。我尝试用 vim 来做到这一点,但到目前为止,在打开线路时没有成功。 不能是 vimgrep,但我认为那里一定有某种功能......

您可以将 grep 输出加载到 Vim 的 quickfix 列表中:

$ vim -q <(grep -rn --include="*.cpp" mystring)

使用 :cn 转到下一个事件,使用 :cp 转到上一个事件。

参见 :help -q:help quickfix

这是另一种方法

$ grep -rn --include="*.cpp" mystring > op
$ vim op

然后使用gF并返回文件op,使用 Ctrl + 6

将 vim 用作寻呼机的一个技巧是向其传递一个连字符。这导致它从 STDIN 而不是从文件

读取
grep -rn --include="*.cpp" mystring | vim -