SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【vim】ファイル検索したい(:vimgrep)

問題

ファイル検索したいです。

VSCodeでいうCtrl+Shift+F、eclipseでいうCtrl+Hがしたいです。

答え

vimgrepする。(内部grep)

:vimgrep
:vim  ← 短縮可能

例)

:vimgrep 検索パターン 検索対象
:vimgrep 検索キーワード 検索したいディレクトリ/*.txt

** を指定すると再帰的に検索するので、以下のような指定ができる。

カレントディレクトリ以下を全部

:vimgrep 検索キーワード **

あるディレクトリ以下を全部

:vimgrep 検索キーワード www/**

あるディレクトリ以下のphpファイルを全部

:vimgrep 検索キーワード app/**/*.php

検索結果でジャンプ

:cc           :cc [nr]        [nr]番のエラーを表示(省略すると再表示)
:cnext        :cn             次のエラーを表示
:cprevious    :cp             1つ前のエラーを表示
:clist        :cl             全エラーの一覧を表示

:grep で検索、:cn, :cp で移動。

移動を繰り返すときは、コマンドの繰り返しが便利。

@:  最後のコマンドを [count] 回繰り返す
@@  直前の @{0-9a-z":*} を [count] 回繰り返す。

:cn で移動、@: でもう一度移動、@@ で移動移動移動…

一覧を表示すればそこから選択してEnterで移動も可能。

検索結果一覧を表示

:cw
:cwindow
:copen

検索結果一覧を閉じる

:cclose

メモ: 外部grep、内部grep

内部grepはひとつひとつvimで開いて検索するイメージ。そのぶん遅い。

外部grepは外部コマンドに丸投げのイメージ。そのぶん速い。

文字コードの影響で、外部grepだとヒットしないものも、vimで化けずに開けるなら内部grepでちゃんと検索できるなど違いがある。

関連するメモ

コメント