Vimの特徴「ビジュアルモード」とは?

これまで4回にわたり取り上げてきたViの機能は、Vi系のエディタであれば大抵は提供しているものだった。VimがViと大きく異なるのは、モードとして「ビジュアルモード」を提供している点だ。そこで今回は、ビジュアルモードを取り上げる。

Vi系エディタでよく使われる機能に置換がある。これはあるワードまたはパターンを別のワードまたはパターンへ一斉に置き換える機能であり、コマンドラインモードに入って、例えば「:%s/対象/置換後ワード/g」のような感じで実行する。この方法では、ファイル全体に対して置換が実行される。特定の範囲に絞り込みたいなら「:開始行,終了行s/対象/置換後ワード/g」といった感じで実行する。行数を指定することで、行単位で適用範囲を指定するわけである。

これに対し、Vimではビジュアルモードというものが用意されており、視覚的に選択した範囲に対して置換を適用できる。視覚的に選択した上で作業できるので、人間としてはこちらのほうがわかりやすい。Vimはこのビジュアルモードが便利なのでぜひ覚えておきたい。

選択方法はv、V、Ctrl-V

ビジュアルモードで選択を行うには、ノーマルモードでv、V、Ctrl-Vのどれかを押す。それぞれビジュアルモードとしての選択方法が違うので、この3つはすべて覚えておいたほうがよい。

キー 移行前モード 移行後モード 内容
v ノーマルモード ビジュアルモード 文字単位で選択
V ノーマルモード ビジュアルモード 行単位で選択
Ctrl-V ノーマルモード ビジュアルモード 矩形(四角)で選択

まずvから見ていこう。ノーマルモードで、テキスト選択を開始したい位置にカーソルを移動させたらvを押す。

  • テキスト選択を開始させたい場所にカーソルを移動させた後

    テキスト選択を開始させたい場所にカーソルを移動させた後

vを押すと、次のようにステータスに「ビジュアル」といった表示が出てくる(この表示内容は設定によっては違うものが出てくるかもしれないが、ビジュアルモードに入ったことは何らかの方法で表示されるはず)。

  • ステータスにビジュアルモードに入ったことが表示される

    ステータスにビジュアルモードに入ったことが表示される

この状態でカーソルを移動させると、次のように最初にカーソルがあった部分から、現在カーソルがある部分までが選択されていく。

  • vによるテキスト選択

    vによるテキスト選択

次はVを見てみよう。Vは行単位での選択だ。ノーマルモードでVを押すと、次のようにカーソルのある行がいきなりまるまる選択された状態になる。

  • Vでビジュアルモードに入ったところ

    Vでビジュアルモードに入ったところ

この状態でカーソルを移動させると、行単位でテキスト選択が行われていく。

  • Vによるビジュアル選択は行単位で行われる

    Vによるビジュアル選択は行単位で行われる

最後はCtrl-Vによるテキスト選択だ。ノーマルモードでCtrl-Vを押すと、次のようにvを押した時と似たような感じになる。

  • Ctrl-Vでビジュアルモードに入ったところ

    Ctrl-Vでビジュアルモードに入ったところ

この状態でカーソルを移動させると、次のように矩形(四角)にテキスト選択が行われる。Vimに限らずエディタでテキスト選択を行った場合、このように矩形(四角)でテキスト選択が行われるのはアドバンス機能というか、基本的なテキスト選択の動作ではないことが多い。大抵はvで選択するテキスト選択のように改行まで含めて選択が行われる。Ctrl-Vでは見たまま、矩形(四角形)で選択が行われる

  • Ctrl-Vでは矩形(四角)で選択が行われる

    Ctrl-Vでは矩形(四角)で選択が行われる

Ctrl-Vによる矩形選択はHTML、プログラミング言語、データなど、同じようなテキストが並んでいるケースでの編集などで便利なことがある。知っていると知っていないのとでは大きな違いが出てくるところだ。v、V、Ctrl-Vによるテキスト選択は、Vimを使う上で必須の機能として覚えておきたい。

ビジュアルモードの使用例

ビジュアルモードは実際に使ってみるのが、習得に向けた最速の道だ。以下、2つの例を紹介するので、ビジュアルモードを使ってみる場合の参考にしてもらえればと思う。

例えば、次のように削除したい範囲をVによるビジュアルモードで行単位で選択する。

  • 削除したい対象を行単位で選択

    削除したい対象を行単位で選択

この状態でdやxを押すと、選択したテキストが削除されて、次のようになる。ビジュアル選択を行わなくても業範囲を指定すればよいので、「:30,54d」のようにしても実行できる。しかし、やってみるとわかるだろうが、行数を入力するのに結構目を凝らして行数を確認することになる。これよりもビジュアルモードで選択してから削除したほうがスムーズに作業できる。

  • dやxを押して選択した行を削除した後

    dやxを押して選択した行を削除した後

次は、Ctrl-Vによる矩形選択を試してみよう。Ctrl-Vを使うと次のように矩形でテキスト選択が行える。

  • Ctrl-Vによる矩形選択

    Ctrl-Vによる矩形選択

この状態で先ほどと同じようにdやxを押すと、選択した部分だけを削除できる。

  • 矩形選択した部分だけを削除した後

    矩形選択した部分だけを削除した後

テキストデータをファイルに貼り付けたあとでデータを編集する場合、例えば、複数行にわたって「先頭行から5文字分だけ削除したい」「行中の5文字目から9文字目だけを削除したい」といった編集を行いたい時がある。Ctrl-Vによるテキスト選択を実施すると、そうした処理を簡単に行うことができる。

ビジュアルモードはぜひ身につけよう

これまで紹介したVimの基本機能だけでもかなり高速な編集ができるようになっているはずだ。そして、今回紹介したビジュアルモードもぜひ押さえておいていただきたい。この機能を知っていると、Vimの使い勝手が大きく変わってくるからだ。

Vimはある程度使えるようになってくると、別の操作方法や普段使っていない機能などを調べることがなくなるが、そのレベルに達した場合も現在の操作方法などを振り返って、もっと短い操作で編集を完了する方法がないかを調べてみてもらいたい。

そうすることで、新たな操作方法を身につけることができるし、さらに編集の効率を上げることが可能になる。