Grep for String并在相应的行打开

时间:2018-03-07 12:30:16

标签: linux vim command-line grep batch-processing

我在使用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,但我认为必须有某种功能......

3 个答案:

答案 0 :(得分:6)

您可以在Vim的快速修补程序列表中加载grep输出:

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

使用:cn转到下一次出现,并使用:cp转到上一次出现。

请参阅:help -q:help quickfix

答案 1 :(得分:1)

这是另一种方法

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

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

答案 2 :(得分:0)

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

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