見出し画像

vi が好き - テキストエディタの話

ソースコードを編集するといえば、BASICな時代はBASICインタプリタを含んだ組み込まれたスクリーンエディタを使うのが当然でエディタというものを意識することはありませんでした。ただ文章を作ったりするには使いものにならないので、テキストエディタというアプリケーションを使うことはあり、プログラムもこれで書くこともありました。

ところが自分で言語処理系を書いてみたり、作ったアプリケーションの中で編集機能を提供しようとすると、自力でスクリーンエディタを書くのは思いの外、大変です。もちろんモニタROMを読めば、そこにはスクリーンエディタのコードはあるのですが、そのまま使えるものでもありませんので、結局、自力で書かなければなりません。

そこでラインエディタという行単位で編集するエディタで間に合わせようということになります。APPLE][の時代ではTinyPASCALやTL/1なんかも、この解決を採っていました。このくらいのコードであれば、自力でも充分に書けます。

さて、UNIXの時代になるとホストとシリアルで接続して端末ソフトの下でコードを書くようになりました。当然、既に vi であるとか、emacs も用意されているのですが、まず端末設定が必要です。端末設定を編集するのに端末設定が必要な vi や emacs は使えないわけです。そこで最初は清く正しく(?) edit というコマンドから入りました。このエディタは自分で作っていたようなラインエディタとほぼ同じだったので、これを使って端末設定を行ったのですが、設定を編集したりシェルスクリプトを書く程度であれば、これで充分です。何せ自分でエディタを書いたことがあるくらいなので、使いこなすのに苦労はいりませんでした。

edit とほぼ同じ使い勝手で正規表現に依る編集もバリバリできる ex というのが使えるということがわかり、こちらを覚えてからは ex に切り替えました(ed というのもありましたね)。この時点で編集するというのは、単に文字を追加していくか、検索して文字列を置き換えていくかという脳みそになっていたんですね。

端末設定も整えば、もうラインエディタを使い続ける理由はありません。もう ex に慣れていたんです。そうであれば当然 vi という選択肢になります。vi はスクリーンエディタですが、”:”を打てば ex のコマンドが使えます。変数名の一括置換なんぞはだいたい ex のコマンドでやりますし、その頃は make の中で ctags コマンドも走らせて、関数名にカーソルを合わせて、コードが書かれているところにジャンプするという便利な使い方を普通にやっていました。

ctagsの使い方(基本)

それから、この時代はホストに積まれているメモリが決して潤沢ではなく、他の人とホストを共用していたので、誰かが emacs を起動すると、だいたいにおいてノンビリと画面を見ている人のプロセスがスワップアウトされてしまい「遅!」と苦情が出てしまうんですね。

他にも vi には接続ボーレートが低速な場合に、行数を制限するモードがあったり、ホストや通信環境が貧弱な場合でも、それなりに使える機能が充実していて、周りの人も、こちらを使う人が多かったです。

もちろん、この時代からエディタにコダワリを持つ方もいて「絶対 emacs」だと譲らない方もいらっしゃいましたが、junet に繋がってメールやニュースを読み書きするようになると、次第に emacs派が増えていった記憶があります(私もメールは emacs でした)。
主に英語を使っている間は vi も良かったのですが、日本語を使うようになると、vi 自身が持つモードと日本語変換のモードの2段重ねのモード切替になるので、さすがに今どのモードにいるのかを把握するのがとても面倒になりました。うっかりモードを間違えて ESC を押すと未変換の文字列が消えてしまったりね(編集モードで日本語を入れても消えるか)。

そういえば vi で日本語を使えるようになるまでの道のりも長くて、もともとは7bitで設計されていて、最上位ビットには役目があったので、簡単に改造するわけにはいきませんでした。そこで7bitカナで実装するのですが、今度は表示されないコード切り替えシーケンスを端末に認識させるのが大変で、文字を挿入していくと次の行に回った文字が化けたり、これはやはり8bitスルーにしないと難しいなと思ったものです。もちろん、この問題は漢字が使えるようになってより深刻になりました。漢字の時代には、ソースコードの文字コードと端末の文字コードを合わせないと化けるのが日常でした。

文字コードに何らかのモードが有ると、検索の時にそれを考慮する必要があって、タダでさえ入力の際にエスケープが必要な “\” を扱う時に、漢字に含まれる 0x5c が引っかかってシフトJISとの相性は最悪というのは vi に限らず、苦しまれた方が多くいた話だと思います。

まあ今はいろいろなエディタがあるので、あえて vi を使う必要は無いのですが、マウスをつかんだり、メニュー画面を見る必要のない vi は、コードを書くにはストレスが少ないです。もちろん emacs でも出来ますが、エディタの中で直接シェルを呼び出すような使い方も多いですしね。

もちろん、キーボードの好みと似たようなところがあって、エディタにもコダワリを持つ方はとても多いです。どれが良いのかと言い始めれば、もう宗教論争になってしまうので、アレコレは書きませんが、いろいろな環境を使わざる得ない立場から言えば、どの環境でもカスタマイズせずに最初から標準で使えるものを選びがちです。

細かい設定やノウハウはだいぶ忘れてしまったので、今度、思い出して調べながらまとめたいなとは思っているところです。

ヘッダ画像は vi ではなくて vim の画面、以下のものを使わせて頂きました。

https://commons.wikimedia.org/wiki/File:Vim-(logiciel)-console.png

この記事が気に入ったらサポートをしてみませんか?