メモ:vimgrep

VimでGrepする覚え書き 1/2 「内部grep」編 - ナレッジエース

内部grep

Vim7からは標準でgrep機能が備わっています。

以下のようにコマンドを実行すると便利。

:vim[grep] /hogehoge/j *.txt | cw

これでカレントディレクトリにある全ての.txtファイルから「hogehoge」を検索し、マッチした結果がQuickFixに表示されます。

ちなみに「j」オプションはマッチしたファイルへ自動的にジャンプしない指定、そして「| cw」はマッチしたファイルがあった場合にQuickFixを開きます。

毎回「| cw」を付けるのが面倒な場合は、以下のautocmd設定で自動化することも可能。

au QuickfixCmdPost vimgrep cw

QuickFixの主な操作は、以前にも一度書きましたが以下の通り。

:cn #次のエラー箇所へジャンプ

cp #前のエラー箇所へジャンプ(
cNでも同じ)

:ccl #QuickFixを閉じる

再帰的に検索するには「**」を使います。

:vimgrep /hogehoge/ **/*.txt

こうすると今度はカレントディレクトリ以下のディレクトリ内にある.txtファイルも検索対象になります。

さて、このように大変便利なvimgrepですが、ひとつ注意すべきはこのコマンドを実行すると検索対象のファイルが全てMRUに反映されてしまうということです。

MRU(最近使ったファイル一覧)のプラグインを使われている方はご注意ください。

Tanablog: Vim7 内蔵の grep を使う

vimgrep をデフォルトの grep プログラムとして使用する

:grep を :vimgrep のエイリアスにするには、gvimrc に以下の行を追加する。

:set grepprg=internal

関連: ハタさんのブログ(復刻版) : vimのgrep(vimgrep)が素晴らしすぎて泣いた。