git grepをVimで使う

Gitのgrepサブコマンドは通常Gitリポジトリーでしか使えない。しかし--no-indexオプションを付けると、Gitリポジトリーではないディレクトリーでも検索できる(もちろんGitリポジトリーでも)。Vimからももちろん使えるので、ackちょっと遅い、ag入れるのが面倒くさい、MSYS上で使ってるとjvgrepの出力が稀におかしい、などの理由でgrepに戻ったりしてる人はgit grepを使うのも良さそう。

set grepprg=git\ grep\ --no-index\ -I\ --line-number

grepformatを編集しないで済ませるためには--line-numberオプションを追加して、行番号を表示させる必要がある。僕はバイナリ・ファイルを無視する-Iオプションも合わせて追加しておいた。パフォーマンスをあげるために--no-colorオプションを付けるのも良さそう。


Gitのgrepサブコマンドだと、グロブの指定をせずにデフォルトで再帰的に下層ディレクトリーを検索してくれるのも楽。検索対象を絞りたい場合はglob(7)に従った形で指定したり、--max-depthオプションを追加して制限したりするだけなので、わかりにくいということはなさそう。agのオプションは覚えられる気しないけど、これなら大丈夫っぽい。