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

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

vimを起動してコマンドモードにしたら
[cc lang=”bash”]:vimgrep 検索ワード 検索先[/cc]
と実行します。

1) 書式

[cc lang=”bash”]:vim[grep][!] /{pattern}/[g][j] {file} …[/cc]

  • 検索ワードには正規表現が使えます。

2) vimgrepのマニュアル

    [cc lang=”bash”]:help vimgrep[/cc]

    3)

    4) 実例

    • divというワードを、カレントディレクトリ配下のhtmlファイルから検索するには

    [cc lang=”bash”]:vimgrep div **/*.html[/cc]

    • 検索結果を画面下部Quickfixにリスト表示するには

    [cc lang=”bash”]:copen[/cc]

    • そこにフォーカスを移すには

    [cc lang=”bash”]C-w w[/cc]
    j,kでリストを上下移動し、エンターでそのファイルを開きます。

    5) Quickfixでの操作

    [cc lang=”bash”]次の結果を表示する
    :cn
    前の結果を表示する
    :cp
    Quickfixを閉じる
    :ccl
    もっと知るには :help quick-window
    [/cc]

    • 検索後、自動的にQuickfixを表示するにはパイプでcopenを実行します

    [cc lang=”bash”]:vimgrep div ~/**/*.html | copen[/cc]

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

    jをつけると最初にマッチしたファイルを開きません
    gをつけると各行でマッチしたすべてを結果に出します
    オプションを指定する際には検索ワードを/で挟みます。
    [cc lang=”bash”]:vimgrep /div/jg ~/**/*.html | copen[/cc]

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

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

    • ホームディレクトリ配下のhtmlファイルから検索する

    [cc lang=”bash”]:vimgrep div ~/**/*.html[/cc]

    • カレントディレクトリ配下のhtmlファイルから検索する

    [cc lang=”bash”]:vimgrep div **/*.html[/cc]

    コメントを残す