6,やっぱりcatが好き

BSDプロジェクトの中心人物はビル・ジョイという人です。この人の作成したプログラムで大変有名なものの1つにテキストエディター「vi」があります。実はこのエディタ、ユーザーインターフェースが大変悪く、非常に使いにくいのですが、これに取って代わるテキストエディタは「emacs」くらいしかないという不思議なエディターです。まず何が悪いかというと、カーソルモードとインサートモードという2つのモードがあって、文字を挿入するには、必ず、インサートモードになる必要がある、という掟があるのです。今までDOSのエディターに慣れ親しんだ方々にとっては、このことはまず、毛嫌いされる第一の関門です。

viの起動は

vi [filename]

です。起動した状態から何か文字を入れるには次の文字をキーボードから入れる必要があります。

i・・・カーソル位置の前に文字を挿入する。
a・・・カーソル位置の後に文字を挿入する。
r・・・カーソル位置から後に文字を上書きする。
o・・・カーソル位置の行の後に新たな行を挿入して文字を入れる。

この状態が、インサートモードです。どんどん文字を入れてみましょう。文字を間違えたらバックスペースキーで消します。しかし、ずいぶん前の文字を消す場合には今までせっかく入れてきた文字をバックスペースキーですべて消していかないとその文字までたどり着けません。この場合ESCキーを押していったんインサートモードから抜けてカーソルモードになりましょう。カーソルを動かすには、

h・・・左に動く
j・・・上に動く
k・・・下に動く
l・・・右に動く

という4つのキーを中心に動かします。文字を消すには

x・・・カーソルの文字を消す。
X・・・カーソルの直前の文字を消す

キーを使いましょう。たくさん入力して文字を検索しなければならなくなったら、

/・・・スラッシュを入力、

すると一番下にカーソルが移動するのでその後に検索すべき文字列をタイプして、enterキーを押しましょう。検索された文字にカーソルが移動します。もう一度下に向かって検索したい場合は、"n" キーをタイプします。さてこのようにして書けた文章を保存するにはいったん、EXコマンドモードに移ってください。(はー、またモードを変えなければ・・・)

:・・・コロンを入力、一番下の行にカーソルが移動する。

この状態から

wq・・・保存してエディタの終了

をタイプします。これで無事にviから抜けられましたね。このほかにもたくさんのコマンドがあるのですが、追って覚えていけばいいでしょう。

vi以前には、エディターといえばexというラインエディターしかなかったのです。ラインエディターというのは、そのカーソルがある1行しか表示をすることができないエディターのことで、全体の様子をうかがいすることすらできないという、使いづらいものです。といってもその当時は、端末といえばテレタイプというタイプライターの親分みたいなものを使っていたので入力した文字はすべてこちら側の紙に書き込まれましたから、それはそれで良かったのです。
しかしVT-100に代表されるCRTの出現で、フルスクリーンエディターの必要性が高まったのでビル・ジョイはexを改造してviを作ることに着手したのでした。しかしこの作業の間に次のようなことが起こったと語っているそうです。

「ある日、viを改造していると、テープ装置が壊れた。残ったソースを復旧させて作業をしているとディスク装置が壊れた。私にはあまり時間がなかったので、とりあえずソースをまとめて、次のプロジェクトに移った。」

そんなわけで、viには使いやすいユーザーインターフェースを実装する時間がなかったということです。
ところで、最近のviコマンドはインサートモードの最中に矢印キーでカーソルを移動することができるものが出現して、使いやすくなりましたが、元祖のviはそのソースの奥深くにベル研時代のコードが含まれているために、ソースが公開されていません。多分いまフリーのUNIX互換OSに含まれるviはviライクなエディターなのでしょう。


今日のほー

後にビル・ジョイ氏は「どのエディターが使いやすいか」というインタビューに答えて、「やはりcat が使いやすい」と答えているそうです。次のようにcat を使うと標準入力、つまりキーボード入力をファイルに書き込むことができます。

% cat > filename

文字をタイプして、最後にコントロール+dを押すと、ファイルの出来上がりです。この方法は、編集ができませんから、1つのファイルを1発で作ってしまわなければならないという、まさに神業的な方法です。こんなやり方が使いやすいというのですから、ビル・ジョイはまさに、神様なのでしょう。