Ubuntu – Given the result of grep -n, how can I open vim in that specific line? (using only keyboard)

command linegrepvim

When I run grep "keyword" -n and get the following list of results:

a/b/c:10:    keyword
a/b/c:70:    keyword
a/b/d:50:    keyword

How can I open one of the files (say the 2nd in list) in the line it found?

I now just copy the the output using my mouse, and copy it after vim and then add + with the line number I copy. (meaning I write vim a/b/c +70 using the mouse copy to get the file name, and another mouse copy to get the line number [or I just copy it by hand, when its short enough])

Is there a way to do it with a keyboard shortcut?

Best Answer

Two things:

  1. Vim has some support for grep.

    If you open Vim, and do :grep keyword ..., Vim populates the quickfix list with the results, and jumps to the first file. You can then jump to the nth quickfix entry with :cc n (and other commands).

  2. You can populate the aforementioned quickfix list using grep's output:

    vim -q <(grep -n keyword ...)
    

    And then use the quickfix navigation commands mentioned above.

Either is simpler than playing around with grep's output manually.

As an alternative to (2), you can save grep's output to a file and use that file instead, if you think you won't necessarily open Vim after:

grep ... | tee log
vim -q log