これまでに取り上げてきたモダンエディタにはなかったが、Vimには「モード」という概念が存在している。モードはかなりの数に上るのだが、最低限「ノーマルモード」「挿入モード」「コマンドラインモード」の3つは覚える必要がある。

初級者を苦しめるモードという概念

Vimを最初に使い始めたユーザがもっともストレスを感じるのはこの「モード」の存在だと思う。ワードプロセッサアプリケーションやメモ帳のようなソフトウェアしか使ってこなかったとすれば、Vimが提供しているモードという概念は使いにくい以外の何者でもないはずだ。

文字を削除したりカーソルを移動するためにモードを移行しなければならないと知ったら驚愕するだろう(なお、今のVimはそこまで厳密にvi的ではなく、文字を入力するモードでもカーソルを移動させたり文字を削除したりも当然実施できる)。

挿入モードはいわゆる文字を入力するモードだ。エディタやワープロで文字を入力する状態がこれに相当する。

ノーマルモードは編集をするためのモードで、文字を削除したりカーソルを移動させたり、コピーしたテキストを貼り付けたりするモードだ。

コマンドラインモードは呪文のような文字列を入力して処理を行うようなモードで、AtomやSublime Text、Brackets、Visual Studio Codeで言うところの「コマンドパレット」に似ている。

検索、置換、コマンド実行による文字列の加工など、呪文的な命令を入力して文字列を加工したりするのがコマンドラインモードだ。ファイルへの書き込みやVimの終了などもこのモードから実施する。

挿入モード、ノーマルモード、コマンドラインモードの切り替え方法はいくつもあるが、代表的なところでは次のような操作になる。ESCキーを押すとノーマルモードに戻ってくると覚えておけばよい。

基本となるモードの切替

上記のモードはviで提供されているモードで、Vimはこれと比べていくつものモードが存在している。それらをすべて覚える必要はないが、Vimの場合にはこれに「ビジュアルモード」と呼ばれるモードが存在していることを覚えておきたい。

これはテキストを視覚的に選択するモードで、エディタやワープロのテキスト選択機能に相当すると考えればよい。ビジュアルモードで選択したテキストは、ノーマルモードでの操作やコマンドラインモードでの操作の対象となる。要するに、選んだテキストに対してコマンドパレット的コマンドを実行できると考えてもらえればよいだろう。

モード誕生の背景

慣れない方は、なぜこんな混乱を招くような仕様なのかと思うかもしれない。実際、使い始めるとほとんどの方は混乱する。

こうした仕組みになった理由は歴史的なもので、当初はVimのようにターミナル全部がエディタとして使えるようなソフトウェアではなく、1行ずつ編集するコマンドラインを使ってテキストファイルを編集していた。高さが1行分しかないワープロだと考えてくれればよいだろう。

しかも表示も編集も毎回コマンドじみた操作をしないといけなかった。高さが1行しかない、すべての操作をコマンドパレットから行うエディタだと考えてもらうとよいかもしれない。

この時代のソフトウェアと比べるとターミナル全体をエディタとして利用できるviは画期的なエディタだったわけだ。モードが産まれたのはそもそもの1行エディタの仕組みをそのまま持ってきていたからで、当時としてはこれが自然だった。

慣れると断然早い! モードによる編集

実は馴れてくるとわかるのだが、テキストの入力や編集という作業をこうした複数のモードに分けて操作するほうが、ワープロのようなソフトウェアよりも作業が早いということに気がつく。

入力中も頭の中はVimモードになっており、どのように編集するか次の操作が自然と浮かんでくる。メニューの階層を探ったり、UIのボタンを探したりといった操作が必要なモダンエディタでは、こうしたVimのシンプルな操作性に追いつかない。

……追いつかないというよりも、コマンドラインモードの呪文とノーマルモードでのコマンド入力の方がかゆいところに手が届きやすいという表現が正しいのかもしれない。

Atom、Sublime Text、Brackets、Visual Studio Codeといったモダンエディタはよくできており、ユーザの思考を操作に反映しやすい。しかし、Vimはそうした操作性を細かいレベルでユーザに提供してくれる。

当然ながら馴れるまでは、Vimの特殊な操作はモダンエディタと比べると苦痛としか感じないかもしれない。しかし、いまだに多くのユーザがVimを使い続けていることが、一つの結論なのだろう。

ターミナル操作のままファイルも編集できるというのは、ほかのモダンエディタでは実現しにくいところだし、今後もVimユーザの多くはVim系のエディタを使い続けるように思える。ぜひ一度は使っておきたいエディタだ。