Vim完全バイブル 第6章 基本的なビジュアルモード

「Vim完全バイブル」のメモの続きです。
今回はテキストの範囲選択を視覚的に行える便利なビジュアルモードについてまとめます。
ビジュアルモードを使うと、例えばテキストを範囲選択して一度に削除、といったことが簡単にできるようになります。


「第6章 基本的なビジュアルモード」の内容は以下の通りです。

  • ビジュアルモードとは
  • 3つのビジュアルモード
  • ビジュアルモードの中断
  • ビジュアルモードとビジュアルラインモードでの編集作業
  • ビジュアルブロックモードでの編集作業

ビジュアルモードとは

ビジュアルモードとは、編集中のテキストの範囲選択を視覚的に行うモードのこと。


以下のようなファイルをファイル編集しているときに、


vを入力してカーソルを移動すると、このように範囲選択ができる。


例えばこの状態でdを入力すると、選択範囲のテキストを一度に削除することができる。

3つのビジュアルモード

ビジュアルモードには以下の3つの種類がある。

  • ビジュアルモード(文字単位選択) 開始キーはv
  • ビジュアルラインモード(行単位選択) 開始キーはV
  • ビジュアルブロックモード(矩形選択) 開始キーはCTRL-V


ビジュアルモード(文字単位選択)
開始キーはv


ビジュアルラインモード(行単位選択)
開始キーはV


ビジュアルブロックモード(矩形選択)
開始キーはCTRL-V


また、あるビジュアルモード中に他のビジュアルモードの開始キーを入力すると、そのモードに切り替えることができる。

ビジュアルモードの中断

編集を行わずにビジュアルモードを中断するには以下の操作を行う。

  • を入力する
  • 現在のビジュアルモードの開始キーを入力する
  • Vimのウィンドウ中で左クリックする(GVimのみ)
  • 他のバッファに移動するコマンドを実行する

ビジュアルモードとビジュアルラインモードでの編集作業

ビジュアルモードビジュアルラインモードでの各コマンドの動作は以下の通り。


ビジュアル(ライン)モード中の編集コマンド

d選択範囲のテキストを削除する
D選択範囲を含む行のテキストをすべて削除する
y選択範囲のテキストをヤンク(コピー)する
Y選択範囲を含む行のテキストをすべてヤンク(コピー)する
c選択範囲のテキストを削除し、新しいテキストを挿入する(挿入モードに移行)
C選択範囲を含む行のテキストをすべて削除し、新しいテキストを挿入する(挿入モードに移行)
J選択範囲の各行を連結する(スペース区切りあり)
gJ選択範囲の各行を連結する(スペース区切りなし)


ビジュアルモードビジュアルラインモードでの各コマンドの動作をヘルプで調べるには、各コマンド名の前にv_を付加すればよい。

:h v_d

ビジュアルブロックモードでの編集作業

ビジュアルブロックモードでの各コマンドの動作は以下の通り。
少し変わった動作をするコマンドもあるので注意。


ビジュアルブロックモード中の編集コマンド

I選択範囲の左端から各行に同じテキストを挿入する(挿入モードに移行)
A選択範囲の右端から各行に同じテキストを挿入する(挿入モードに移行)
d選択範囲のテキストを削除する
D選択範囲の左端から行末までのテキストをすべて削除する
c選択範囲のテキストを削除し、選択範囲の左端から各行に同じテキストを挿入する(挿入モードに移行)
C選択範囲の左端から行末までのテキストをすべて削除し、選択範囲の左端から各行に同じテキストを挿入する(挿入モードに移行)


例。
以下のようにビジュアルブロックが選択されているとする(赤枠で示した部分が選択範囲)。


Iコマンドの例。
Inot


Aコマンドの例。
Abar


cコマンドの例。
cbar


上の例のように、IcCコマンドは選択範囲に入っていない短い行には文字列を挿入しないが、Aコマンドは短い行にも文字列を挿入する。


ビジュアルブロックモードでの各コマンドの動作をヘルプで調べるには、各コマンド名の前にv_b_を付加すればよい。

:h v_b_d

ビジュアルブロックモード中のコマンドは変わった動作をするものが多いので、詳しく知りたい方はコマンドのヘルプを見るか、各コマンドの使用例(blockwise-examples)を参照して下さい。

:h blockwise-examples

今回はここまで

次回はVimでプログラミングをする時に役立つコマンドやオプションについてです。

ちょっと次回はページ数多いな…。30ページくらいあるよぅ。