この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。
出典を追加して記事の信頼性向上にご協力ください。(2014年10月)
エディタ戦争(Editor War)とは、プログラミングを行う人々(特にハッカー文化に属する人々)の間で続いている、どのテキストエディタが一番よいかというテーマの論争を指す。その中でも二大陣営といえるのは、vi愛好派とEmacs愛好派である。
ハッカー文化においては、愛好するソフトウェアを宗教的狂信とも言える尊敬を持って扱う伝統があり、そのようなソフトウェアの中でもテキストエディタはもっとも一般的である。自らの選択したエディタが最善であると信じるグループ間で数々の論争(フレーム)が発生してきた。もっとも、そのような論争の参加者のほとんどは、からかい半分であると理解している(ユーモアの節参照)。似たような論争はオペレーティングシステムやウェブブラウザ(ブラウザ戦争)、プログラミング言語にもあるし、コードの字下げスタイルのような傍から見れば些細なことでも論争となってきた。
エディタ戦争においては、vi と Emacs というUNIX系オペレーティングシステムで最も一般的な2つのエディタの信奉者の間で主に行われている。UNIXのユーザーやプログラマの多くは、どちらかのエディタを使用している。また、大抵の人は両方の使い方を知っており、それもあってどちらが良いかを判断できる立場にあると考えている。さらに、これらのエディタは他と比較して急勾配な習熟曲線を持っており、それはこれらエディタのユーザーがその使い方を学習するために多大な時間を要したことを意味している。 vi と Emacs の重要な違いは次の通りである: また機能セットと立ち上げ時間により、ユーザの利用形態にも差異が生じる傾向がある。 vi ユーザーが外部コマンドを実行する場合、 vi のコマンドモードは用いられず適宜 vi は終了され、UNIXシェルからコマンドが実行される。一方、 Emacs のユーザーが外部コマンドを実行する場合、 Emacs は終了されず組み込まれたシェルモードを介してコマンドが実行される。
目次
1 vi と Emacs の違い
1.1 vi側の主張する利点
1.2 Emacs側の主張する利点
2 ユーモア
3 最近の状況
4 脚注
5 関連項目
6 外部リンク
vi と Emacs の違い
vi はモードのあるエディタであるが、Emacs にはモードがない。vi ではテキストの変更やカーソルの移動を非常に単純なキー入力のコマンドで行うため、それらコマンドとテキスト内容としてのキー入力の区別が必要となる。結果として、ユーザーはテキスト入力モードとコマンド入力モードを切り替えながら編集を行うことになる。
vi は小型で高速だが、(少なくとも本来は)カスタマイズがあまりできない。Emacs は低速(特に立ち上げ時)だが、カスタマイズは無制限である。
GNU Emacsはテキストモードのコンソールのほか、グラフィカルユーザインタフェース (GUI) への表示をサポートしており、一般的には GUI アプリケーションとして利用される。一方 vi の標準的なサポートはテキストモードのコンソールに留まり、 GUI 環境では GUI 機能を伴うターミナルアプリケーションを介して利用される。また vi の派生版である vim には、 GUI 機能を備えた gvim というアプリケーションが存在する。(参考: ⇒http://www.vim.org/download.php#pc)
vi側の主張する利点
vi は UNIX系オペレーティングシステムには必ず存在し、POSIX標準にも含まれている。標準Cライブラリで実装できるので、UNIX、Linux、AmigaOS、DOS、Windows、Mac OS、BeOSなど各種OSで動作する。
vi はある意味で WYSIWYG[1]である。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
Emacs には40以上のプログラミング言語やマークアップ言語用の編集モードがある(Java、Perl、LaTeX、C、C++、Objective-C、FORTRAN、LISP、Scheme、Pascal、Bashなど)。
Emacs は英語以外の21の言語の入力と表示をサポートしている(中国語、チェコ語、ヒンディー語、ヘブライ語、ロシア語、ベトナム語、その他)。
Emacs はテキストファイルからPostScript出力を生成できるし、LaTeXやTeX、さらにはウィキペディア用の編集モードまである。