vim vs. grep : external quickfix/error file
My usual trick of using vim with grep works well when single grep invocation is sufficient.
Yet quite often I end up piping one grep's output to another grep to refine the results. And that doesn't work with my old trick of wrapping the grep MethodName *.cpp
into vim -c ":grep MethodName *.cpp"
as the vim's internal grep doesn't support pipes.
Digging through the documentation I found that it is possible to accomplish and it fits well to my workflow.
Start grepping(*):$ grep MethodName *.cpp # not fine enough...
$ grep MethodName *.cpp | grep -v rubbish # much better
# and save to a file
$ grep -n MethodName *.cpp | grep -v rubbish > tmp1.out
N.B. -n to the grep is required as VIM needs line numbers to jump to the locations.
And now tell VIM to use the produced tmp1.out
error file:$ vim -q tmp1.out
or$ vim -c ":cf tmp1.out"
or from inside running VIM::cf tmp1.out
Check the :h :cf
for the official documentation.
(*) Obviously in the case it doesn't have to be grep - anything what produces similar output would do. I used once a perl script to generate VIM-compatible error file from diff output to preview potential merge conflicts.