プログラミングをしていると、ファイルを分割して、機能ごとに分けて作ることが多いと思います。
しかし、その複数のファイルのなかから、特定の文字列を検索したいこともよくあります。
そこで今回は、Vimを使って分割した複数のファイルから特定の文字列を検索する方法を紹介したいと思います。
:vimgrepを使って文字列を検索する方法
:vimgrep
を使って文字列を検索する方法です。
:vimgrep 検索したい文字列 検索したい場所
今開いているファイルの場所以下のファイルすべてから「wp」という文字列を検索したい場合は、このようになります。
:vimgrep wp **/*
vimgrep
はvim
というふうに省略することもできます。
:vim wp **/*
これでファイルをまたいで検索をすることができます。
検索したい文字列がある場所へカーソルを移動する方法
そして、検索したい文字列が次に出てくる場所へカーソルを移動させるには、以下のコマンドを使います。
:cnext
また、前にカーソルを移動させるにはこのようにします。
:cNext
もしくは
:cprevious
しかし、これを毎回入力するのは大変です。以下でその解決方法を紹介します。
検索したい文字列がある場所へすぐに移動できるようにカスタマイズ
上記のコマンドをいちいち入力していては大変なので、Vimの設定ファイル(.vimrcなど)に、以下を入力しましょう。
nnoremap <C-n> :cnext<CR>
nnoremap <C-p> :cprevious<CR>
これで、次の場所に行きたいときはcontrol + nを、前の場所に行きたいときはcontrol + pで、カーソルを移動できるようになります。
検索結果の一覧を表示
検索するときに、後ろに| cw
をつけることによって、検索結果の一覧を表示することができます。
:vim wp **/* | cw
まとめ
プログラミングでは、ほとんどの場合、ファイルを分割して行ないます。
そうなるとファイルをまたいだ検索をしたくなります。
vimgrep
を使うことで、複数のファイルから、特定の文字列を検索することができます。
参考になれば幸いです。