SOFTELメモ Developer's blog

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

【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でちゃんと検索できるなど違いがある。

関連するメモ

コメント