エディタ戦争

**エディタ戦争**（エディタせんそう、）は、プログラミングを行う人々の間で続いている、どのテキストエディタが一番よいかというテーマの論争を指す。その中でも二大陣営といえるのは、vi愛好派とEmacs愛好派である。

ハッカー文化においては、愛好するソフトウェアを宗教的狂信とも言える尊敬を持って扱う伝統があり、そのようなソフトウェアの中でもテキストエディタはもっとも一般的である。自らの選択したエディタが最善であると信じるグループ間で数々の論争（フレーム）が発生してきた。もっとも、そのような論争の参加者のほとんどは、からかい半分であると理解している（ユーモアの節参照）。似たような論争はオペレーティングシステム (OS) やウェブブラウザ（ブラウザ戦争）、プログラミング言語にもあるし、コードの字下げスタイルのような傍から見れば些細なことでも論争となってきた。

エディタ戦争においては、viとEmacsというUnix系OSで最も一般的な2つのエディタの信奉者の間で主に行われている。UNIXのユーザーやプログラマの多くは、どちらかのエディタを使用している。また、大抵の人は両方の使い方を知っており、それもあってどちらが良いかを判断できる立場にあると考えている。さらに、これらのエディタは他と比較して急勾配な習熟曲線を持っており、それはこれらエディタのユーザーがその使い方を学習するために多大な時間を要したことを意味している。

## viとEmacs の違い
viとEmacs の重要な違いは次の通りである:
* viはモードのあるエディタであるが、Emacsにはモードがない。viではテキストの変更やカーソルの移動を非常に単純なキー入力のコマンドで行うため、それらコマンドとテキスト内容としてのキー入力の区別が必要となる。結果として、ユーザーはテキスト入力モードとコマンド入力モードを切り替えながら編集を行うことになる。
* viは小型で高速だが、（少なくとも本来は）カスタマイズがあまりできない。Emacsは低速（特に立ち上げ時）だが、カスタマイズは無制限である。
* GNU Emacsはテキストモードのコンソールのほか、グラフィカルユーザインタフェース (GUI) への表示をサポートしており、一般的にはGUIアプリケーションとして利用される。一方viの標準的なサポートはテキストモードのコンソールに留まり、 GUI環境ではGUI機能を伴うターミナルアプリケーションを介して利用される。またviの派生版であるvimには、 GUI機能を備えたgvimというアプリケーションが存在する。

また機能セットと立ち上げ時間により、ユーザの利用形態にも差異が生じる傾向がある。

viユーザーが外部コマンドを実行する場合、 viのコマンドモードは用いられず適宜viは終了され、Unixシェルからコマンドが実行される。
一方、 Emacsのユーザーが外部コマンドを実行する場合、 Emacsは終了されず組み込まれたシェルモードを介してコマンドが実行される。

### vi側の主張する利点
* viはUnix系OSには必ず存在し、POSIX標準にも含まれている。標準Cライブラリで実装できるので、UNIX、Linux、AmigaOS、DOS、Windows、Mac OS、BeOSなど各種OSで動作する。
* viはある意味でWYSIWYGである。viユーザーはほとんどカスタマイズをしないが、Emacs のヘビーユーザーはカスタマイズを行うことが多く、自分のカスタマイズが使えない環境では不便さを感じる。
* viは忍び寄る機能主義 (creeping featurism) に陥っておらず、Emacsよりも小型で高速。オーバヘッドも少ない。
* viはUNIXの設計思想（"do one thing, and do it well"; 1つのことだけをうまくやる）に適合している。UNIXは十徳ナイフを作るものではなく、簡単な仕事をこなす軽いツールを作ることをよしとする。
* viのコマンドはCtrlとかAltといった修飾キーをほとんど使わずに入力できる。これにより腱鞘炎になる可能性が減る。

### Emacs側の主張する利点
* Emacsはviよりもコマンドが豊富である。
* EmacsはLISPの方言であるEmacs Lispによるスクリプト記述が可能である。
* Emacsにはviper-modeというvi互換モードが含まれている。
* Emacsではテキスト入力モードとコマンド入力モードを切り替える必要がない。
* GNU Emacsはカレンダー計算ができ、長期暦やDiscordianもサポートしている。これはviにはない。
* Emacsには40以上のプログラミング言語やマークアップ言語用の編集モードがある（Java、Perl、LaTeX、C、C++、Objective-C、FORTRAN、LISP、Scheme、Pascal、Bashなど）。
* Emacsは英語以外の21の言語の入力と表示をサポートしている（中国語、チェコ語、ヒンディー語、ヘブライ語、ロシア語、ベトナム語、その他）。
* EmacsはテキストファイルからPostScript出力を生成できるし、LaTeXやTeX、さらには用の編集モードまである。
* Emacs自身をシェルとして使用でき、各種プラグインを使うことで通常エディタから抜けないと実行できない作業までこなす。例えば、ファイルのマージやdiff機能、更新ログの保守、デバッグ操作、バージョン管理システム、ファイルやディレクトリの操作、Makeファイル作成、gnusを使ったニュースグループ閲覧などである。
* EmacsはEmacs Lispによって容易に拡張可能であり、viよりもUNIXの精神をよく表している。エリック・レイモンドらの主張によれば、Emacsは単なるエディタプログラムではなく、必要に応じてモジュールを追加可能な移植性の高いフレームワークである。
* EmacsはQWERTY配列に依存していない。viのカーソル移動は "hjkl" キーで行われ、これはキー配列に依存している。
* 様々なプラットフォームに移植されており、各種OSで動作する。Unix系（GNU/Linux、BSD系、Solaris、AIX、IRIX、macOSなど）、DOS、Windows、AmigaOS、OpenVMSなどで動作する。Unix系ではOSに同梱されることが多い。

## ユーモア

議論においてしばしば、edこそ「標準テキストエディタ」であることが指摘されている。

リチャード・ストールマンは冗談で **Church of Emacs**（Emacs教会）を設立し、*vi vi vi*（ローマ数字の6-6-6）を「獣のエディタ」と称したが、必ずしも vi 利用に反対の立場をとったわけではなく、プロプライエタリソフトウェアをアナテマと呼んだ（「viの自由ソフトウェア版を使うことは罪ではなく、苦行である」）。同教会は独自のニュースグループを持ち（alt.religion.emacs）、このパロディ化した宗教の教義をポストしていた。

ストールマンは冗談として自身を**St I[[GNU]]−cius**（聖イグヌチウス; 聖イグナシアスにかけた洒落）と称した。

vi信奉者は対抗して **Cult of vi** を設立した。 強硬なEmacsユーザーはこれを「（vi派によるより優れたemacs派の）猿真似」であると主張している。

viの入力モード問題について、Emacs側はviの2つのモードを "beep repeatedly"（ビービー鳴らすモード）と "break everything"（何もかも台無しにするモード）と揶揄した。vi側はEmacsのコマンド入力によって手根管症候群が起きると揶揄し、EMACSを何らかの頭字語であるとして様々な元となる言葉を考案した（例えば "Escape Meta Alt Control Shift" など）。

ほかにも "Eight Megabytes And Constantly Swapping"（8メガバイトで常にスワップされている）あるいは "EMACS Makes Any Computer Slow"（EMACSはどんなコンピュータも低速にする。再帰的頭字語）、"Eventually Munches All Computer Storage"（結局全ての記憶容量を食らい尽くす）の略だとも揶揄された。これらは Emacs が非常にリソースを消費することを指したもので、当時としては8メガバイトのメモリは非常に大きかった。Emacsのディストリビューションには、こういった頭字語の一覧が付属している。

Emacsが機能的に肥大していることを揶揄し、vi側はEmacsを「偉大なOSだが、きちんとしたエディタだけが欠けている」と評した。

UNIXユーザーの間では、Emacsの複雑さへの揶揄もこめて、修飾キーを押下しながら自分の名前を入力したらどうなるかを確認するという遊びも行われていた。同様の「ゲーム」はEmacsの前身であるTECOでも行われていた。

Word War vi はエディタ戦争を題材としたディフェンダー風のシューティングゲームである。

## 最近の状況
かつてはviを手本とした様々な小型エディタが開発された。これは当時のメモリ容量が小さかったため、メモリ使用量を抑えることが重要だったためである。その後コンピュータのメモリ容量が増加するにつれ、vimに代表されるviクローンはサイズ面でもコードの複雑さの面でも成長していった。このため、vi派とEmacs派が主張していた利点や相手側の欠点は大差ない状況となっていった。例えば拡張を加えないvimであっても、ディスク上に格納するのにオリジナルのviの10倍の領域を必要とする。また、vimは様々な拡張が可能で、古いバージョンのEmacsと比べると低速である。しかし、viもEmacsもEclipseのような統合開発環境に比べればずっと軽量である。

ティム・オライリーは1999年、オライリーメディアから出版したviの入門書がEmacsの入門書の2倍売り上げたと述べている。これは、viの方が人気があるともとれるし、viの方が習得が難しいので本が売れたともとれる。多くのプログラマはEmacsやvi、およびそれらの派生エディタを使っている。例えばリーナス・トーバルズはMicroEMACSを使っている。

viやEmacsの互換エディタ以外では、picoとそのFOSS版であるnano、neなどのエディタにも熱心な支持者がいるが、viやEmacsほどではない。

GNU/LinuxやBSD系を代表とする多くのOSでは、複数のテキストエディタが同梱されており、ユーザーの需要に応えるようになっている。例えば、macOSにはデフォルトで Emacs、vim、nano、ed が搭載されている。

2021年7月23日のGIGAZINEの記事にて、Visual Studio Codeがシェアを拡大しつつあり、50%を超えるシェアを獲得していると報道された。

## 脚注
### 注釈

### 出典

## 関連項目
* ブラウザ戦争
* きのこたけのこ戦争

## 外部リンク
* Emacs Wiki, community site dedicated to documenting and discussing Emacs
* ''Rules, Sins, Virtues, Gods and more of The Church of Emacs''
* Vi Lovers Home Page
* $EDITOR sucks-rules-o-meter 
* A transcript of Richard introducing St. IGNUcius and the Church of Emacs