テキスト選択

VimのベースとなっているViでは「何行目から何行目までに○○を処理」といった方法で範囲処理を行うことができる。慣れればこれでもよいのだが、この方法は正直結構めんどくさい。そこでVimのテキスト選択機能だ。Vimではほかのエディタのように視覚的にテキストを選択する機能が用意されている。実際問題のところこの機能のほうが直感的でわかりやすい。

Vimにおけるテキスト選択の方法はいくつも用意されている。組み合わせでいけば数限りないのだが、ここでは基本中の基本である行選択、文字選択、矩形選択を取り上げておく。これだけマスターしておけばさまざまな作業の効率を一気にアップさせることができるようになる。

行選択(V)

テキスト選択をわかりやすく示すために、次のようなテキストファイルを用意して使用する。

テキスト選択の説明に使用するテキストファイル

まず、カーソルを次のように5行目の先頭に移動させる。

5行目の先頭にカーソルがある状態

この状態で「V」キーを押す。大文字のVだ(Shiftキーを押しながらvキーを押す)。そうすると次のようにカーソルのある行がまるごと選択対象となる。

「V」を押すとカーソルのある行が選択される

この状態でカーソルを上下に移動させると選択範囲が広がる。例えば、下方向にカーソルを5行分移動させると次のようになる。

カーソルを下に5回移動

ここで削除のキーを押すと選択した対象が全て削除される。置換処理を指定すれば選択範囲内だけで置換が行われるし、コマンドにつなげれば対象のみがコマンドで処理される。選択した部分だけが処理されるので便利だ。

「ESC」キーを2回押すと選択が解除される。

「ESC」キー2回で選択解除

Vimに限らずVi系エディタでは「ESC」キーを押すとノーマルな状態に戻ってくる(この辺りについては「モード」という概念を理解する必要があるのだが、モードについてはもう少し操作方法を紹介してから説明する予定だ)。困ったら「ESC」キーを押すのがVimだ。

文字選択(v)

先程行ったのは行単位での選択だ。Vimでは文字単位でテキスト選択することもできる。次のスクリーンショットはカーソルを5行目の先頭に移動させたものだ。

5行目の先頭にカーソルがある状態

この状態で「v」を押すと文字選択の状態に入る。小文字の「v」だ。テキストの見た目は変わらないのだが、ステータバーを見ると「— ビジュアル —」という表示が出ていることを確認できる。文字単位で選択する状態に入ったということを示している。

「v」を押すと文字選択の状態に入る

例えば、ここでカーソルを右に10回移動させると、次のように文字ごとに選択範囲が広がっていくことを確認できる。

カーソルを右に10回移動させたところ

ここでカーソルを下に移動させると、選択範囲は次のようになる。行を超えて次の行の先頭からカーソルがある場所までが選択される。このテキスト選択はワープロアプリケーションやエディタアプリケーションで一般的なものなので、なじみのあるものだろう。

カーソルを下に1回移動させたところ

「ESC」キーを2回押すと選択は解除される。

「ESC」キー2回で選択を解除

文字単位での選択はメモ帳やWindowsアプリケーションのテキスト選択などで一般的なものと同じだ。違和感を感じることはないと思う。

矩形選択(Ctrl-v)

最近の多機能エディタやワープロアプリケーションには矩形選択という四角スタイルのテキスト選択機能が用意されている。メモ帳やシンプルなエディタにはない機能だが、HTMLのようなファイルの編集などでとても便利な機能なのでこれも覚えておいたほうがよいと思う。

次のスクリーンショットではカーソルが5行目の先頭から10文字目の場所にある。

5行目の先頭から10文字目にカーソルがある状態

この状態で「Ctrl」+「v」を押すと、矩形選択の状態に入る。見た目に変化は少ないが、ステータスバーを見ると「— ビジュアル 矩形 —」という表示が出ていることがわかる。矩形選択の状態になっているということだ。

矩形選択の状態になっている

この状態で右へカーソルを10文字分移動させると次のようになる。ここまでは文字選択と同じだ。

選択範囲を右へ10個移動させたところ

この状態で下へカーソルを10行分移動させると、選択範囲は次のようになる。

選択範囲を下へ10行分移動させたところ

矩形というのは、要するに四角ということだ。文字選択の場合には行末まで選択範囲が広がっていたが、矩形選択では始点と終点を四角に選択する。慣れてくるとこれはとても使いやすい機能である。

「ESC」キー2回で選択解除

これまでと同じように「ESC」キーを2回押すことで選択を解除することができる。

Vimにテキストデータやソースコード、データなどを貼り付けて編集を行うということもあるわけだが、そういった場合に矩形選択+削除や矩形選択+置換、などの処理が結構便利だったりする。実施にどのように使うことがあるのかといったサンプルはもうちょっとVimの使い方の基本を説明してから紹介するとしよう。

選択で処理の効率化

今回はここまでにしておこう。Vimはテキスト選択とほかの機能(置換、削除、任意コマンドなどさまざま)を組み合わせることができる。応用範囲がぐぐっと広がるのだ。まず、今回取り上げたテキスト選択機能を実際にVimを使って練習してもらえればと思う。考えなくても指が動くまで練習しておくのがポイントだ。