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
来做到这一点,但到目前为止,在打开线路时没有成功。
不能是 vim
或 grep
,但我认为那里一定有某种功能......
您可以将 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 -
我在使用 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
来做到这一点,但到目前为止,在打开线路时没有成功。
不能是 vim
或 grep
,但我认为那里一定有某种功能......
您可以将 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 -