vimgrep は vim が標準にそなえる grep (文字列検索)機能。
Windows には grep が標準にないので( find はあるが)重宝する。 僕の環境では Borland C++ Compiler に付属の grep.exe もあるが、vimgrep の場合は、検索にヒットした最初のファイルに自動的にジャンプするなど独自の機能を持っている。
ジャンプしたくない場合は vimgrep の flag によって制御できる。
vimgrep の Usage は help によれば以下のよう。
この [g][j] の flag のうち、g を付加すると、一つのファイルに検索文字列が複数ヒットした場合に複数件として表示する。 j を付加すると、最初にヒットしたファイルへのジャンプをしない。
ついでに、:cw で検索結果を表示するので、たとえば
というように予め指定しておけば楽。
蛇足かもしれないが、たとえば以下のようにできる。
com! -nargs=+ Vimgrep call VimgrepMod(<f-args>) function! VimgrepMod(...) if len(a:000) < 1 || len(a:000) > 2 echo 'Error: verify argument' return 0 elseif len(a:000) == 1 let files = '*' else let files = a:2 endif execute 'vimgrep /' .a:1 .'/gj ' .files .'|cw' return 1 endfunction
以上の場合、
のように、第1引数に検索する文字列、第2引数に検索対象のファイルを指定すればよい。それぞれ vimgrep の {pattern} と {file} に置き換えられる。
第2引数を省略した場合は検索対象は '*' (すべてのファイル)となる。