vimgrepでファイル横断検索をする方法

秀丸のgrep検索のように、検索結果一覧から対象ファイルにジャンプすることもできます。

vimを起動してコマンドモードにしたら

1
:vimgrep 検索ワード 検索先

と実行します。

1) 書式

1
:vim[grep][!] /{pattern}/[g][j] {file} ...
  • 検索ワードには正規表現が使えます。

2) vimgrepのマニュアル

    1
    :help vimgrep

    3)

    4) 実例

    • divというワードを、カレントディレクトリ配下のhtmlファイルから検索するには
    1
    :vimgrep div **/*.html
    • 検索結果を画面下部Quickfixにリスト表示するには
    1
    :copen
    • そこにフォーカスを移すには
    1
    C-w w

    j,kでリストを上下移動し、エンターでそのファイルを開きます。

    5) Quickfixでの操作

    1
    2
    3
    4
    5
    6
    7
    次の結果を表示する
    :cn
    前の結果を表示する
    :cp
    Quickfixを閉じる
    :ccl
    もっと知るには :help quick-window
    • 検索後、自動的にQuickfixを表示するにはパイプでcopenを実行します
    1
    :vimgrep div ~/**/*.html | copen

    6) 検索ワードへのオプション

    jをつけると最初にマッチしたファイルを開きません
    gをつけると各行でマッチしたすべてを結果に出します
    オプションを指定する際には検索ワードを/で挟みます。

    1
    :vimgrep /div/jg ~/**/*.html | copen

    7) サブディレクトリ検索

    サブディレクトリのファイルも検索(再帰的検索)するには ** を使います。

    • ホームディレクトリ配下のhtmlファイルから検索する
    1
    :vimgrep div ~/**/*.html
    • カレントディレクトリ配下のhtmlファイルから検索する
    1
    :vimgrep div **/*.html

    コメントを残す