【vim】ファイル検索したい(:grep)
問題
ファイル検索したいです。
VSCodeでいうCtrl+Shift+F、eclipseでいうCtrl+Hがしたいです。
答え
grepする。(外部grep)
例)
:grep -r キーワード
:grep -r キーワード 検索したいディレクトリ/
:grep キーワード *.txt
現在編集中のファイルを対象にするときは % の指定も可能。
:grep キーワード %
検索結果でジャンプ
: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でちゃんと検索できるなど違いがある。
コメント