カーソルを自在に動かす

今回はVimでカーソルを移動する方法を紹介する。基本的にはカーソルキーを押せばカーソルは移動するのだが、これでは移動距離が稼げない。VimはGUI系のアプリケーションではないので、マウスでクリックした場所にカーソルが飛ぶという動きはデフォルトでは有効にはなっていない(有効にすることもできるが、Vimでは混乱を招くことの方が多いような気がするので、この方法はあまりお勧めできない)。ショートカットキーを使ってサクサク移動させるのが効率化の第一歩だ。

Vimでカーソルキーを移動させる方法は本当にたくさんある。なぜこんなに用意されているのか不思議に思えるほどだ。なかには「次の単語の先頭に飛ぶ」「次の単語の末尾に飛ぶ」「前の単語の先頭に飛ぶ」「前の単語の末尾に飛ぶ」「次の段落の先頭に飛ぶ」など、文脈的に移動できるものもある。

全部覚えることはまずできないし、単語系ジャンプは日本語をベースにしている限り使わないことが多いように思う。最低限、これだけ知っていれば十分恩恵が受けられる……というものだけ覚えればよいと思うので、ここでは特に使用頻度が高く汎用性のあるものだけを紹介しておく。今回取り上げる方法を覚えておけば、かなり自由にカーソルが移動できるようになるはずだ。

その前に、行番号を表示する設定

Vimのデフォルトの設定はディストリビューションごとに異なるが、その多くでは、「全ての行には行番号が表示されない」というのがデフォルトの設定になっていると思う。以下のようにステータスバーには行番号も表示されているのだが、ちょっとわかりにくい。

行番号はステータスバーに表示されており、各行には表示されていない

ここで次のように「:set number↩」と入力してみていただきたい。

:set number↩で行番号を行ごとに表示

これで、各行に行番号が表示されるようになる。

各行に行番号が表示されているところ

設定はVimを終了すると同時に消えてしまうので、毎回行番号を表示させたいなら次の設定を~/.vimrcファイルに書いておく。

set number

なお、行番号を消したくなったら「:set nonumber↩」と入力する。

カーソルジャンプ - 最大限に上下左右

次に、カーソルを最大限にジャンプさせる方法を覚えてしまおう。まず、「G」でファイルの一番最後の行へカーソルを飛ばすことができる。

「G」でファイル末行へカーソルを移動

これと真逆の動きは「gg」だ。「gg」でファイルの先頭行へカーソルが移動する。

「gg」でファイル先頭行へカーソルを移動

今度は左右への移動だ。「$」でカーソルがある行の行末へ移動する。

「$」で行末へカーソルを移動

これと真逆の動きが「^」となる。「^」で、カーソルがある行の行頭へ移動する。

「^」で行頭へカーソルを移動

以上のように、カーソルを最大限に上下左右へ移動するショートカットキーは「gg」「G」「^」「$」だ。正規表現では「^」が行頭で「$」は行末を意味するので、その文字がそのままカーソルの移動キーになっていることに気がつけば、すんなり覚えることができるのではないだろうか。

指定行へジャンプ

各行に行番号を表示する設定にしてあると、「◯行目に移動したい」と思うこともあるだろう。この場合、「:数字↩」のように入力すると、その行番号の行へカーソルを移動させることができる。

「:数字↩」で指定した行番号の行へ移動

この操作を応用すると、「:1」でファイルの最初の行へ移動することができる。ggと同じだ。逆に「:」の後にありえないくらい大きな行数を入力すれば、ファイルの末尾の行へ移動させることが可能だ。「gg」および「G」を忘れがちなら、「:数字↩」の方法だけ覚えておくというのも手だ。

検索で移動

テキストファイルや設定ファイルを編集する場合、すでに編集したい部分の文字列を知っていることが多い。例えば、タイプミスや誤変換を直すためのものだったり、特定の項目の数字を書き換えたり、対象設定部分をコメントアウトしたかったりするといったケースだ。

こういった場合、すでに対象となる文字列を知っているので、検索機能を使って一気に移動するというのが簡単だ。「/キーワード↩」でファイルの末尾へ向かって指定したキーワードで検索を行い、一致した部分へカーソルが移動する。

「/キーワード↩」で指定したキーワードまでカーソルがファイル末尾へ向かって移動

検索処理は繰り返し行うことができる。次に「/↩」と検索を行うと、先ほど指定したキーワードで再検索が実施される。「/キーワード↩」で検索を行い、以降は「/↩」を何度も繰り返して次のワードへ次のワードへと移動していくという使い方になる。

「/↩」で先ほどの検索を繰り返す

「/」はカーソルからファイルの末尾へ向かって検索を行う。一方、「?」を使うと、今度はカーソルからファイルの先頭へ向かって検索が行われる。

「?キーワード↩」で指定したキーワードまでカーソルがファイル先頭へ向かって移動

こちらも先ほどと同じように「?↩」で先ほどの検索を繰り返すことができる。

「?↩」で先ほどの検索を繰り返す

「/」と「?」による検索はかなり便利なので、ぜひ初期の段階で習得してしまいたい。これを知っているのと知らないのとでは、操作の効率がだいぶ変わってくるはずだ。

カーソル移動方法まとめ

今回取り上げたショートカットキーとその内容は以下の通りだ。

ショートカットキー 操作内容
gg ファイル先頭へ移動
G ファイル末尾へ移動
^ 行頭へ移動
$ 行末へ移動
:数字↩ 指定した行へ移動
/キーワード↩ キーワードをファイル末尾方向へ検索
/↩ ファイル末尾方向へ再検索
?キーワード↩ キーワードをファイル先頭方向へ検索
?↩ ファイル先頭方向へ再検索

冒頭で説明した通り、Vimにはこれ以外にもカーソルキーを移動させる方法はたくさん用意されている。しかし、それらをすべて覚える必要はない。今回紹介したショートカットを覚えるだけで、かなりカーソル移動が楽になると思う。Vimを使いこなすには、練習が必要だ。この辺りのキー操作は、考えなくてもできるようになるまでとにかく実践してみよう。