Skip to content
Advertisement

Grep for String and open at the corresponding line

I’m having several occurrences of a specific string over several files in several lines obtained with 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

I’d like to open these files sequencially on the corresponding lines. I tried to do it with vim, but so far no success when it comes to open the line. Mustn’t be vim or grep, but I’d assume there must be some kind of functionality out there…

Advertisement

Answer

You can load your grep output in Vim’s quickfix list with:

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

Go to the next occurence with :cn and to the previous occurrence with :cp.

See :help -q and :help quickfix.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement