Vim のビジュアルモードの基本 (v, Shift-v, Ctrl-v)

ビジュアルモードの開始・終了

ビジュアルモードは、Vim においてテキストの範囲選択を行うためのモードです。 ノーマルモードで下記のようなコマンドを入力することでビジュアルモードに入ることができます。

入力説明
vビジュアルモード(文字単位)
Shift-vビジュアルラインモード(行単位)
Ctrl-vビジュアルブロックモード(矩形)

ビジュアルモードを抜けてノーマルモードに戻るには、Esc を押すか、何かコマンドを実行します(d で削除するなど)。 コマンドを実行した場合は、選択した範囲に対してコマンドが適用されます。

ビジュアルモードの選択範囲を拡張する

カーソル移動で拡張する

/p/iumn4xs/img-001.gif

ビジュアルモードに入った後で o を入力することで、カーソル位置を選択領域の先頭、末尾へ交互に移動することができます。 この状態でカーソルを動かすと、選択領域を自在に伸縮させることができます。

ルールに応じて拡張する

/p/iumn4xs/img-002.gif

ビジュアルモードに入った後で、下記のような操作を行うと、ルールに従って選択範囲を拡張することができます。

入力説明
ipカーソル位置の段落全体を選択
apカーソル位置の段落全体を選択(後続の空行も含めて選択)
iwカーソル位置の単語全体を選択
awカーソル位置の単語全体を選択(後続のスペースも含めて選択)
i(括弧 () に囲まれた領域を選択
a(括弧 () に囲まれた領域を選択(括弧も含めて選択)
i{括弧 {} に囲まれた領域を選択
a{括弧 {} に囲まれた領域を選択(括弧も含めて選択)
i[括弧 [] に囲まれた領域を選択
a[括弧 [] に囲まれた領域を選択(括弧も含めて選択)
i<括弧 <> に囲まれた領域を選択
a<括弧 <> に囲まれた領域を選択(括弧を含めて選択)

例えば、ビジュアルモードで段落全体(空行で区切られた連続する行)を一気に選択するには、その段落内にカーソルがある状態で ip と入力します。 ノーマルモードから段落全体を選択状態にするには vip と入力すればよいことになります(上のデモアニメを参照)。 「段落選択はビップ」と覚えます。

段落全体を操作対象とする ip は便利なので、是非覚えておきましょう。 他にも下記のようなシーケンスで使用することができます。

dip  "段落全体を削除する (vip → d としても同様)
yip  "段落全体をヤンク(コピー)する (vip → y としても同様)

ビジュアルモードに関するヘルプ

ビジュアルモードで使用できるコマンドのヘルプを表示するには、そのコマンドのプレフィックスとして v_ を付けて :help コマンドを実行します(参考: Vim の help コマンドの使い方)。

ビジュアルモードの d コマンドのヘルプを表示
:help v_d

同様に、Ctrl-v で入ることのできるビジュアルブロックモードのコマンドのヘルプを表示するには、プレフィックスとして v_b_ を付けます。

ビジュアルブロックモードの r コマンドのヘルプを表示
:help v_b_r

複数行に同じテキストを挿入する

/p/iumn4xs/img-003.gif
図: 複数行に同じ文字を挿入

Ctrl-v のビジュアルブロックモードで複数行を選択し、Shift-i でテキストを入力すると、その範囲に同じテキストを一気に挿入できます(2 行目以降には Esc を押した段階で挿入されます)。 上記の例では、Java コードの複数行をまとめてコメントアウトしています。

/p/iumn4xs/img-004.gif
図: 複数行を矩形削除

逆に選択範囲を削除するには、ビジュアルモードで選択した後で、x あるいは d を入力するだけで OK です。