[Vim]複数ファイルで文字列を検索する

  • 公開日:2020/3/27
この記事は最終更新日から4年以上が経過しています。

Vimで特定の文字列を複数のファイルを対象に検索する方法です。マルチファイル検索と言ったり、grep検索と言ったりもします。
これが出来ると何かと作業が捗ります。

扱いやすいのは:vim

# 検索するキーワードは「hoge」
# 検索対象は、開いた階層以下のファイル
:vim hoge **/* | cw
# 検索するキーワードは「hoge」
# 検索対象は、「sample」階層以下の拡張子が「php」のファイル
:vim hoge sample/*.php | cw

| cwをつけているので検索結果が一覧(Quickfixリスト)で表示されます。
一覧が表示されるエリアは通常のウィンドウ(画面)扱いです

画面の移動コマンドは以下のとおり。(cCtrl
<c-w>h <c-w>j <c-w>k <c-w>l
カーソルをファイル名に合わせてEnterを押すとファイルを開きます。
画面を閉じるときは、:q

もっと高速に検索したいなら:grep

# 検索するキーワードは「hoge」
# 検索対象は、開いた階層以下のファイル
:grep hoge **/*

# 検索結果が出たら以下でQuickfixリスト表示すると便利
:copen
# 検索するキーワードは「hoge」
# 検索対象は、「sample」階層以下の拡張子が「php」のファイル
:grep hoge sample/*.php

# 検索結果が出たら以下でQuickfixリスト表示すると便利
:copen

:vimよりも高速に複数ファイル検索ができます。違いは、検索結果の表示のされ方です。
そのままだと扱いにくいので検索結果が表示されたら:copenコマンドで:vim| cwを付けたときと同様にQuickfixリストで表示されるようにします。