Viを使いはじめてから約一週間が経過した。 そのド初心者である自分がVi(もしくはそのクローンであるVim)に関してVi入門者に向けた文章を書こうと思う。
というのも、自分は、先日、オライリーから出ている名著の誉れ高い「入門Vi」を8割くらい読んだのだが、そこで認識を新たにすることがあったためである。
Viにはモードなど存在しない。
一言で言えば、私がここで書きたいことはこの1行に要約される。
普通のViの解説では、Viにはモードがいくつかあるという説明がされている。ノーマルモード、コマンドモード、入力モード、ビジュアルモードなど。
しかし、私は「入門Vi」を読んでこの説明が間違いだということに気がついた。
私はVi初心者だが、実はViを最初に使ったのはかれこれ20年位前だろうか。その当時もViの解説はモードの説明からはじまるものが多かった。
だが、これはシンプルなUnix思想で作られただろうViを理解する上で無用にViの理解を複雑にしてしまう説明だ。
私は最初この説明を読んで頭が混乱し、こんな旧式のエディターなど使ってられるかと思った悲しい過去がある。
モードという概念は、もともとは単なる説明の方便だったものが、最初から実在するもののように使われているのだろう。
Viにはコマンドしかない。
つまり、Viにはモードはなく、コマンドしかないというのが私の結論だ。
たとえばViのいわゆる入力モードなるものは、インサートコマンドであり、入力した文字はインサートコマンドの引数のようなものだ。そしてEscキーでインサートコマンドを終了させる。
だが強いて言えば、Exモードというのはあると言えるかもしれない。
コロン(:)で一番下のラインに入力が移る、コマンドモードとも呼ばれるあれである。
だが、「入門Vi」を読んで、Exモードというのは、ExエディタをViの内部から起動していることを知った。
ViとExエディタの関係
「入門Vi」を読むと、ViとはExエディタというラインエディタをスクリーンエディタに発展させたものだと書かれている。
今では、ExはミトコンドリアのようにViに取り込まれ、Viの一部のように使われているが、いわゆるExモードではあくまでExエディタのコマンドが動いている。
今でもExエディタだけを単体で起動させることができる。
ターミナルから
Ex
とタイプすればExエディタ単体で起動する。
さらに、このExエディタからVimを起動することもできる。
:vi
とすれば、Vimが起動する。
こうしてみると、ExエディタからVimを呼べるように、実はExモード(コマンドモードとも呼ばれる)なるものはVimからExエディタを呼んでいるだけだとわかる。
実は普通のエディターでもあったVim
多くの入門解説にはなぜか書かれていないが、今のVimは普通のエディターのように使える。
どういうことかというと、いわゆる入力モード(正確にはインサートコマンド実施時)で矢印キーによるカーソル移動が上下左右に自由自在だ。BackspaceキーもDeleteキーも普通に使える。Ctrl-Hのバックスペースも使える。
であれば、メモ帳アプリと同じように使えるということだ。コマンドを忘れても、もしくは最初から何も知らなくても使える。
※)ただし、この場合であっても、いわゆる入力モードに入る方法(インサートコマンドの方法)と、エスケープキーで入力モードを抜ける方法(インサートコマンドを終了させる方法)は最低限しらないといけないだろうけども。
なお、この文章はVimで書いた。しかし、やはりこういう日本語の文章を書く場合は、普通のエディターのほうがずっと楽だと思った次第である。
しかし、Vimの真骨頂は、そのコマンドの組み合わせの自由度にあるのだろう。