← Vim道場

検索でジャンプする

ファイルが長くなると、行番号を数えて飛ぶより「あの単語のところ」と言えたほうが速くなります。検索はVimでは移動キーの一種で、覚えるのは / と n と N の3つだけです。

第5章 整えて探すレッスン 24 / 36

検索は移動キーの一種

Vimの検索は「探して一覧を出す」機能ではなく、カーソルを動かすキーです。だから dc と組み合わせられて、d/return と打つと「次の return の手前まで消す」になります。

最後まで行くとファイルの先頭に戻って続きます(折り返しの際はメッセージが出ます)。上方向へ検索したいときは ? を使いますが、/N の組み合わせでも同じことができます。

カーソル下の単語を検索する

単語の上で * を押すと、その単語を打ち込まずに検索できます。変数名の使われている場所をたどるときはこれが速く、逆方向は # です。

検索した語がハイライトされたままで邪魔なときは :noh で消せます。入力の途中から候補位置に飛んでくれる incsearch と、見つかった語を光らせる hlsearch は、設定ファイルで有効にしておくと便利です。

大文字と小文字をどう扱うか

既定では検索は大文字小文字を区別します。set ignorecase を書くと区別しなくなりますが、そのままだと大文字で探したいときに困ります。そこで set smartcase を一緒に書くのが定番で、検索語に大文字が1つでも含まれていれば区別する、という動きになります。

この2つを組み合わせると、error で探せば ErrorERROR も拾い、Error で探せば Error だけを拾います。設定を1回だけ書いておけば、あとは打ち方で切り替わります。

検索は範囲の指定にも使える

検索がモーションだということは、d/return のように削除の範囲として渡せるということです。さらに / の後ろにはオフセットを付けられて、/return/e と書くと見つかった語の末尾にカーソルが止まります。d/return/e なら return を含めて消せます。

「ここからあの単語まで」という範囲は、行やカッコの単位では言い当てにくいことがあります。そのときに検索を範囲として使えるのは、Vimの中でも強力な部類の書き方です。

正規表現の書き方を切り替える

Vimの検索パターンは、多くの記号を \ で打ち消して書く決まりになっています。(+ をグループや繰り返しの意味で使うには \( \+ と書きます。他の言語の正規表現に慣れていると書きにくいところです。

パターンの先頭に \v を付けると、この打ち消しがほぼ不要になります。/\v(foo|bar)+ のように、他の言語と近い書き方ができます。長いパターンを書くときは \v から始めると読みやすくなります。

このレッスンで扱うキー

キー動き
/下方向へ検索
n次の検索結果へ
N前の検索結果へ
*カーソル位置の単語を検索
#同じく逆向きに検索
?上方向へ検索

関連記事

レッスン一覧へ戻るキーの逆引き一覧検定を受ける