質問: Vimでvimgrepを使用するとき、複数拡張子を指定すると文字列を正しく検索できない問題に直面しています。 vimgrepの動作テストとして下記のようなディレクトリを用意しました。 ![](https://i.stack.imgur.com/wPwHT.png) a.c a.h b.c b.hには全て'test'という文字列だけが記載されています。 この環境でvimgrepを行った結果が下記の通りです。 ■カレントディレクトリが . の場合(vim上で:cdで遷移した) `vimgrep /test/**/*` →4件ヒット(OK:期待通り動作) `vimgrep /test/**/*.c` →2件ヒット(OK:期待通り動作) `vimgrep /test/**/*.h` →2件ヒット(OK:期待通り動作) `vimgrep /test/**/*.c *.h` →2件ヒット(NG:4件ヒットするはず) ■カレントディレクトリがD1の場合(vim上で:cdで遷移した) `vimgrep /test/**/*` →4件ヒット(OK:期待通り動作) `vimgrep /test/**/*.c` →2件ヒット(OK:期待通り動作) `vimgrep /test/**/*.h` →2件ヒット(OK:期待通り動作) `vimgrep /test/**/*.c *.h` →3件ヒット(NG:4件ヒットするはず) ■カレントディレクトリがD2の場合(vim上で:cdで遷移した) `vimgrep /test/**/*` →2件ヒット(OK:期待通り動作) `vimgrep /test/**/*.c` →1件ヒット(OK:期待通り動作) `vimgrep /test/**/*.h` →1件ヒット(OK:期待通り動作) `vimgrep /test/**/*.c *.h` →2件ヒット(OK:期待通り動作) 結果として検索対象に複数の拡張子を指定した場合に、サブディレクトリまで正しく文字列を検索できていないようです。 原因がわかる方がいましたらアドバイスを頂けると助かります。 -環境- Ubuntu 18.04 Vim 8.1 .vimrcは空の状態 よろしくお願いします。
回答: `:vimgrep` Ex コマンドのシグネチャは `:vim[grep][!] /{pattern}/[g][j] {file} ...` です。深いディレクトリ階層を再帰的に検索したい場合は `{file}` の部分に `**/*.c` のように記述します。 つまりやりたいことは以下のコマンドで実現できると思います。 ``` vimgrep /test/ **/*.c **/*.h ```