エディタ戦争って?
エディタ戦争(Editor War)とは、プログラミングを行う人々(特にハッカー文化に属する人々)の間で続いている、どのテキストエディタが一番よいかというテーマの論争を指す。 -wikipediaより抜粋
プログラマにとってエディタは手足、エディタは家族、エディタは生命です。どんなエディタを使うか、そしてそれをいかに使いこなすかがプログラマのステータス(自己満足)と言えるでしょう。
これはそんなエディタをめぐり、長らく続く戦争の記録です。
エディタの歴史
ラインエディタ時代
遥か太古、エンジニアはコマンドによってテキストを編集していました。この頃は世は全て事もなし、人々の心は安泰に包まれていたともいなかったとも言われています。とにかく、大きな争いは起こりませんでした。
ラインエディタではUnixのed系が有名です。
スクリーンエディタ
その後、ファイルの内容を画面に表示しながら編集することができるスクリーンエディタが登場しました。そして1970年代にはviとEmacsという二つのエディタが生まれ、現代まで続くエディタ戦争の火種となりました。
vi
1976年にビル・ジョイ氏により開発されました。ラインエディタのexを先祖に持ち、コマンド等に根強く残っています。
viの特徴は以下の通りです
- モード: viにはコマンド、挿入、ビジュアルなど多数のモードがあり、これらを切り替えながら編集します。
- コマンド:コマンドモードでは文字列の挿入、削除、置換等を多数のコマンドを組み合わせて行います。
- 軽量:viは他のエディタと比べてコンパクトです。
現在はvimという後継が広く普及しており、Unix系OSには大抵の場合このどちらかが標準で入っています。
Emacs
Emacsはviの少し前から同時期にMITで開発が始まりました。
- コマンド:Emacsにはモードが存在せず、コマンドは修飾キー(Ctrlなど)と他のキーの組み合わせで入力されます。
- 対応言語:多くの言語(C++等メジャーな言語からウィキペディアページの編集モードまで)がサポートされています。
- カスタマイズ:Lispでエディタをカスタムできる他、拡張機能を入れればwebブラウザやメールまで使えます。
こちらも多くの人に広まりましたが、処理系が乱立した結果viほどのまとまりはないです。
エディタ戦争開戦
そのうちvi派とEmacs派は、お互いを批判し始めました。
vi派の主張
- viはUNIX系OSには必ず含まれる。
- Emacsはカスタムしすぎて他の環境になった時使いづらいが、viはそうでもない。
- Emacsは十得ナイフであり、機能の多さのせいでリソースを使いすぎる。
- 「Emacsは優れたOSだが、優れたエディタだけが足りない。」
- viは修飾キーが無いから腱鞘炎にならない。
Emacs派の主張
- viよりコマンドが豊富で、しかもモードに煩わされない。
- Lispにより容易に拡張できる。
- Emacsは多くのニーズに応えられる。
その後Emacs教会ができたりviカルトができたりして、エディタ界はこの二派で大別されました。
これにより情勢は安定されたかのように見えましたが...
エディタ戦国時代
vi(とその後継であるvim)もEmacsも、CUI上で使われることが普通でした。
しかしグラフィカルのウィンドウを持つOSが普及し、今やデスクトップ用途のほぼ全てでGUIが使われています。エディタも例外ではなく、GUI上で動作するものが台頭するようになりました。
最近では以下の3つがメジャーといえます。
Atom
GitHub開発。テーマは"A hackable text editor for the 21st Century"
macOS、Windows、Linux等で動作し、パッケージをインストールすることで機能をカスタマイズできる。
Sublime Text
プロプライエタリ(商用)のエディタ。Pythonで開発されているらしい。
macOS、Windows、Linux等で動作し、ファイル検索等プロジェクト管理に強い(らしい)。
Visual Studio Code
Microsoft開発。同社のIDEであるVisual Studioのテキストエディタ部分。
macOS、Windows、Linux等で動作し、結構早い。
現状
プログラミングという行為がコマンドラインで行われるとは限らないのは、今や常識となりました。
しかしvi(,m)やEmacsを未だ愛用する人も多く、vimは現在でも1位か2位の人気を誇ります。
これらの背景には、単純に好き・CUIはどんな環境でも使える・コンパイラやgit等ツールの使用がCUIからの方がやりやすい等の理由があります。
最早エディタ戦争は、作業環境におけるGUC派とGUI派の代理戦争となったのです(???)
感想
vimは慣れるまで苦労したが、コマンドで編集できるのは結構楽だし面白い。まだまだ訓練の余地はあるし、使えば使うほど手に馴染むエディタだ。
AtomやVS Codeなどはプロジェクト管理やwebサービスとの連携においては最早IDEとの境界も曖昧なくらい高機能だが、テキスト入力についてはコマンドは排除されショートカットくらいしかない。それってnanoと変わらなくね?
という老害っぽいことを以前話したら、友達に「Atomにも操作をvimっぽくするパッケージあるよ」と言われた。諸行無常。