Vimの基本操作

これまでにVimの基本的な仕組みを説明するとともに、カーソルの移動に慣れるためのプログラムを紹介した。Vimは練習しないことにはスムーズに利用できるようにならないので、機会を見つけては練習してもらえればと思う。

今回は、Vimを使う上で基本となる操作方法を紹介する。Vimが提供する機能は本当に多いので、すべてを記憶して体に覚え込ませることは難しい。同じキーでもモードが変わると違う意味になるものもあり、混乱が起きやすいところだ。

基本的には、ノーマルモードでどのキーを押すと何が起こるのかを覚えていくことが最初の学習方法となる。以下、具体的な操作方法を紹介しよう。

挿入、削除、結合、終了、アンドゥ/リドゥ

Vimでノーマルモードから導入モードに移行する方法はいくつもある。代表的なところでは、次のキーがノーマルモードから挿入モードへの移行に割り当てられている。違いは、挿入モードに移動するためにカーソルがどの位置に移動するかにある。

モード キー 内容
ノーマルモード a カーソルの次の場所から挿入開始
ノーマルモード A カーソルのある行末から挿入開始
ノーマルモード INSERT カーソルのある場所から挿入開始
ノーマルモード i カーソルのある場所から挿入開始
ノーマルモード I カーソルのある行のインデントなどを除いた最初に文字が現れる場所から挿入開始
ノーマルモード o カーソルのある行の上に空行を追加してから挿入開始
ノーマルモード O カーソルのある行の下に空行を追加してから挿入開始

文字を削除する方法もさまざまだ。カーソルの場所の文字を削除、カーソルの1つ前の文字を削除、カーソルから行末までを削除、カーソルよりも前の文字から行頭までを削除、行を削除、といった具合だ。

モード キー 内容
ノーマルモード x カーソルの場所にある文字を削除
ノーマルモード dl カーソルの場所にある文字を削除
ノーマルモード DEL カーソルの場所にある文字を削除
ノーマルモード X カーソルより1つ前にある文字を削除
ノーマルモード dh カーソルより1つ前にある文字を削除
ノーマルモード dd カーソルのある行を削除
ノーマルモード D カーソルの場所にある文字から行末までを削除
ノーマルモード d$ カーソルの場所にある文字から行末までを削除
ノーマルモード d0 カーソルより1つ前のある文字から行頭までを削除

改行コードを削除するという意味では、次のキーも削除ということになる。結果的に行を結合する処理となるので、カーソル行と次の行を結合する処理となる。

モード キー 内容
ノーマルモード J カーソルのある行と下の行を結合。下の行のインデントは削除あれ、結合時にスペースで区切られる

ファイルの保存とVimの終了には、次のような操作が存在している。ほかにもいくつかあるが、この辺りを覚えてけばいいのではないかと思う。

モード キー 内容
ノーマルモード ZZ ファイルの保存とVimの終了
ノーマルモード :wq ファイルの保存とVimの終了
ノーマルモード :q! ファイルを保存せずに終了

Vimにはアンドゥとリドゥに機能も備わっている。最初は操作ミスが頻発することが予想されるので、アンドゥとリドゥは最初に覚えておきたい操作だ。リドゥはアンドゥされた処理をさらに戻すという処理である。

モード キー 内容
ノーマルモード u アンドゥ
ノーマルモード Ctrl-R リドゥ

これまで説明したところが、最も基本的な編集向けキーとなる。

カーソルの移動、ページスクロール、検索

前回取り上げたカーソルの移動はシンプルなものばかりだった。Vimはさらに多くのカーソル操作方法を提供している。それらの中でも、よく使われるものを以下に紹介しよう

モード キー 内容
ノーマルモード h カーソルを1つ左へ移動させる
ノーマルモード j カーソルを1つ下へ移動させる
ノーマルモード k カーソルを1つ上へ移動させる
ノーマルモード l カーソルを1つ右へ移動させる
ノーマルモード カーソルを1つ左へ移動させる
ノーマルモード カーソルを1つ下へ移動させる
ノーマルモード カーソルを1つ上へ移動させる
ノーマルモード カーソルを1つ右へ移動させる
ノーマルモード w カーソルを1つ次の単語の先頭へ移動させる
ノーマルモード b カーソルを1つ前の単語の先頭へ移動させる
ノーマルモード e カーソルを1つ次の単語の末尾へ移動させる
ノーマルモード ge カーソルを1つ前の単語の末尾へ移動させる
ノーマルモード W カーソルを1つ次の単語の先頭へ移動させる(記号も単語の一部をみなす)
ノーマルモード B カーソルを1つ前の単語の先頭へ移動させる(記号も単語の一部をみなす)
ノーマルモード E カーソルを1つ次の単語の末尾へ移動させる(記号も単語の一部をみなす)
ノーマルモード gE カーソルを1つ前の単語の末尾へ移動させる(記号も単語の一部をみなす)
ノーマルモード 0 カーソルを行頭へ移動させる
ノーマルモード $ カーソルを行末へ移動させる
ノーマルモード ^ カーソルを行の文章の先頭へ移動させる
ノーマルモード f文字 カーソルのある行で、カーソルから行末にかけて存在する最初の指定された文字までカーソルを移動させる
ノーマルモード F文字 カーソルのある行で、カーソルから行頭にかけて存在する最初の指定された文字までカーソルを移動させる
ノーマルモード t文字 カーソルのある行で、カーソルから行末にかけて存在する最初の指定された文字の1つ前までカーソルを移動させる
ノーマルモード T文字 カーソルのある行で、カーソルから行頭にかけて存在する最初の指定された文字の1つ前までカーソルを移動させる
ノーマルモード % カーソルの下にあるカッコに対応するカッコへコンソールを移動させる
ノーマルモード gg カーソルをファイルの先頭行の行頭へ移動させる
ノーマルモード G カーソルをファイルの末尾行の行頭へ移動させる
ノーマルモード 数字G カーソルを指定した行目の行頭へ移動させる
ノーマルモード :数字 カーソルを指定した行目の行頭へ移動させる
ノーマルモード H カーソルを表示されているスクリーンの先頭行の文章の先頭へ移動させる
ノーマルモード M カーソルを表示されているスクリーンの中央行の文章の先頭へ移動させる
ノーマルモード L カーソルを表示されているスクリーンの末尾行の文章の先頭へ移動させる

カーソルの移動ではなく、スクリーンごと移動する方法としては次のような操作も用意されている。特にzzは覚えておくと便利なキーだ。

モード キー 内容
ノーマルモード Ctrl-U ページをスクロールアップ
ノーマルモード zz カーソルのある行がスクリーンの中央にくるようにページをスクロール
ノーマルモード Ctrl-D ページをスクロールダウン

Vimでは検索もよく使う。この機能を使うと、行番号や移動行数などを意識することなくジャンプすることなどができるようになるので、早い段階で覚えておきたいキー操作だ。

モード キー 内容
ノーマルモード /キーワード カーソルからファイルの末尾へ向かってキーワード検索を実施してカーソルを移動させる
ノーマルモード ?キーワード カーソルからファイルの先頭へ向かってキーワード検索を実施してカーソルを移動させる

数字指定で繰り返し実行

:を入力してコマンドラインモードに移動するものを除き、上記の操作は操作の前に数字を入力することで繰り返すことができる。例えば、10ddとすればカーソルのある行から下10行分の行を削除できる。10jとすればカーソルを下に10回移動させることが可能だ。命令の前に数字、これで繰り返し回数を指定できる。

繰り返し入力をしている場合はいったん立ち止まって

Vimが提供している機能とキー操作はこの程度ではないのだが、少なくともここで取り上げたようなキー操作を覚えておけば、スムーズにファイルの編集ができるようになるだろう。Vimはとにかく練習が大切だ。

ただし、同じキーを繰り返し入力していると思った時は、いったん立ち止まってみてほしい。その操作を一発で行う方法があるはずだ。Vimでは入力効率を考えて立ち止まり、その都度もっと効率の良い操作方法がないかを調べてみてほしい。このような作業を繰り返していくと、Vimの操作スキルがメキメキ向上していくと思う。