[Vim]複数ファイルで文字列を検索する
- 公開日:2020/3/27
この記事は最終更新日から4年以上が経過しています。
Vimで特定の文字列を複数のファイルを対象に検索する方法です。マルチファイル検索と言ったり、grep検索と言ったりもします。
これが出来ると何かと作業が捗ります。
扱いやすいのは:vim
# 検索するキーワードは「hoge」
# 検索対象は、開いた階層以下のファイル
:vim hoge **/* | cw
# 検索するキーワードは「hoge」
# 検索対象は、「sample」階層以下の拡張子が「php」のファイル
:vim hoge sample/*.php | cw
| cw
をつけているので検索結果が一覧(Quickfixリスト)で表示されます。
一覧が表示されるエリアは通常のウィンドウ(画面)扱いです
画面の移動コマンドは以下のとおり。(c
はCtrl
)<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リストで表示されるようにします。