Vim: open files of the matches on the lines given by Grep?

前端 未结 8 1420
无人共我
无人共我 2021-02-02 16:46

I want to get automatically to the positions of the results in Vim after grepping, on command line. Is there such feature?

Files to open in Vim on the lines give

8条回答
  •  暗喜
    暗喜 (楼主)
    2021-02-02 17:34

    You probably want to make functions for these. :)

    Sequential vim calls (console)

    grep -rn "implements" app | # Or any (with "-n") you like
      awk '{
        split($0,a,":"); # split on ":"
        print " +
      }' |
      parallel --halt-on-error 1 -j1 --tty bash -ec # halt on error and "-e" important to make it possible to quit in the middle
    

    Use :cq from vim to stop editing.

    Concurrent opening in tabs (gvim)

    Start the server:

    gvim --servername GVIM
    

    Open the tabs:

    grep -rn "implements" app | # again, any grep you like (with "-n")
      awk "{ # double quotes because of $PWD
        split(\$0,a,\":\"); # split on ":"
        print \":tabedit $PWD/\" a[1] \"\" a[2] \"G\" # Vim commands. Open file, then jump to line
      }" | 
      parallel gvim --servername GVIM --remote-send # of course the servername needs to match
    

提交回复
热议问题