【Vim】文字列の検索

目次

/を使用した検索

/を使用した検索では、現在開いているファイル(カレントバッファ)に対して検索を行います。

カーソルを移動させることで

検索方法

検索の開始

  • 検索ワードを入力後、エンターで検索結果の文字列のある場所へカーソルが移動します。
  • 検索ワードには正規表現も使用できます
  • スペースは入れない
    1
    :/検索ワード

検索結果へ移動

  • n : 次の検索結果へ
  • N : 前の検索結果へ

設定

大文字と小文字を区別しない

デフォルトでは大文字と小文字を区別するので、区別せずに検索したい場合は、以下の設定を適応させる

1
:set ignorecase

vimgrep検索

カレントディレクトリから相対パスで指定したファイル内部orフォルダ内部のファイル内部を検索できる

通常の場合、:vim {検索文字列} 検索対象パスで検索を行うことができるが、出てくる結果がとても見づらいので、Quickfixと組み合わせる方法を基本として紹介する

検索方法

検索の開始

  • 検索対象のパスはカレント
  • cwはcwindowの略で、検索結果の一覧を別ウィンドウとして表示してくれる
    1
    :vimgrep {検索文字列} 検索対象パス | cw

vimgrepvimと省略もできる

1
:vim {検索文字列} 検索対象パス | cw

検索対象パスの指定方法について

1
2
3
4
5
6
7
8
9
10
11
12
" カレントバッファのみを対象にする
:vim {検索文字列} %
" カレントディレクトリ以下のあらゆるファイルを対象にする
:vim {検索文字列} **
" ~/Desktop/memo/以下のあらゆるファイルを対象にする(ディレクトリを再帰的に検索)
:vim {検索文字列} ~/Desktop/memo/**
" ~/Desktop/memo/内のファイルを対象にする
:vim {検索文字列} ~/Desktop/memo/*
" ~/Desktop/memo/以下のerbファイルを対象にする
:vim {検索文字列} ~/Desktop/memo/**/*.md
" ~/Desktop/memo/以下でaで始まるerbファイルを対象にする
:vim {検索文字列} ~/Desktop/memo/**/a*.erb

自動的にcwコマンドを付加する

.vimrcに以下の行を追加する

1
autocmd QuickFixCmdPost *grep* cwindow

cwについての詳しい解説

  • https://qiita.com/yuku_t/items/0c1aff03949cb1b8fe6b
    より抜粋

    ちなみにここで作られたウィンドウはvim用語ではquickfix-windowと呼ばれる。
    QuickfixというのはとあるCコンパイラが出力するコンパイルエラー形式のこと(らしく)、それをファイルに保存してvimから読み込んでエラー箇所を簡単に飛べると嬉しいよね、という動機で作られた機能の総称。vimgrepの検索結果は自動的にこの形式で読み込まれるため、Quickfixの結果を一覧表示するquickfix-windowで一覧表示できる、というわけだ。

検索結果への移動(Quickfix)

  • Quickfixリストウィンドウ内で、jkで上下移動して開きたい行でEnter

  • コマンドで移動する場合

    • cn : 次の検索結果へ
    • cp : 前の検索結果へ
    • ccl : Quickfixを閉じる

参考

Author

Daiki Iijima

Posted on

2021-05-22

Updated on

2024-04-17

Licensed under