编辑器之战

编辑器之战是指计算机编程领域内，两类文本编辑器vi（以及衍生版本）和Emacs用户之间的对抗冲突。这已经成为黑客文化和自由软件社区文化的一部分。

战火在两群用户之间多次点燃，他们互相蔑视，坚信自己的选择才是最完美的。相比其他的IT领域战争（如浏览器大战、操作系统之争、编程语言之争、代码缩进风格之战)，编辑器的选择其实通常只是个人问题。

## vi与Emacs的不同

vi与Emacs之间最重要的不同见下表：

vi｜Emacs

快捷键命令｜vi通过记录按键序列，形成决策树中的一条路径，从而确定一个命令。｜Emacs通过组合键的方式立即执行命令。组合键同样遵循决策树，但并不属于独立的按键顺序。

内存占用和定制性｜由于历史原因，vi小而快，但定制性上比较受限。而vi的进化版本Vim与vi相比，提供了更多的实用功能，提高了可定制性。这使得Vim可以与Emacs媲美。对于小文件而言，vi几乎可以做到瞬时打开，Vim也可以接近瞬时。｜因为要执行大量的启动代码，包括用户代码，所以Emacs启动慢且占用更多内存（甚至和Vim比也是如此）。但Emacs高度可定制，包含大量复杂功能。它基本上是一个Lisp程序的执行环境。Emacs 18 (1987年发布)引入了服务器模式，这样可以在后台一直运行。可以启动不同的Emacs客户端实例，并且附加到这个服务器上，互相分享状态。Emacs客户端也可以做到几乎瞬间启动，因为它只是通知已经启动的Emacs来重新显示界面。

用户界面｜vi早先独占命令行终端，没有图形用户界面（GUI）。后来的衍生版本，如MacVim和gVim，都具备全功能的GUI。但是，这些GUI对等距字体的支持是有问题的，并且它们不支持同一文档内存在不同字号的字体。｜Emacs，最初也为终端设计。作为早期Lisp机器遗留下来的产物，它只提供了纯文本界面。从Emacs 18开始支持X11 GUI，并且在Emacs 19成为默认支持的界面。现在的Emacs完全支持等距字体，支持字号的变化，而且支持文档内嵌图象和超级链接。

功能/导航｜vi具有明确的编辑模式。｜Emacs采用功能键组合。

按键｜vi不使用Alt键，并且几乎不用Ctrl键。vi的按键主要限制在字母、数字和退出键。这是打字机时代遗留下的习惯，但是因为手指不需要做太大的移动就可以完成vi的大多数功能，所以提高了输入效率。｜有人把Emacs称作“Escape，Meta，Alt，Control，Shift”，这个说法总结了Emacs所使用的大多数组合键，除了Super键。Emacs在Lisp机器上面被创造，当时使用的Space-cadet键盘比现代键盘更适合使用组合键。有很多Emacs插件，例如spacemacs或ergoemacs可以把组合键替换成比较容易按的按键。

语言支持｜vi对除英语以外的语言的支持不好。Vim可以部分地支持其他语言，例如阿拉伯语、希伯来语、中文、日文等。｜Emacs支持所有兼容Unicode的语言。

### vi类型编辑器的优点

- 遵循“简单工具，多样组合”的理念。
- 小，符合Unix哲学中的“只做一件事，并做好它”，避免了功能蔓延。
- 比Emacs快（至少历史上是这样的）。
- 可运行于任何实现了C标准库的系统之上，包括UNIX、Linux、AmigaOS、DOS、Windows、Mac、BeOS和POSIX兼容系统等等。
- 让“QWERTY”键盘用户将手指保持在默认键位上，使编辑时手指移动更少。
- 更普及。基本上所有Unix和类Unix系统都默认提供了vi或其变体。

### Emacs的优点

- 符合“厨房水槽”理念，提供了比vi更多的功能。
- 移植最广泛的非试用计算机程序之一。它能在各种操作系统上运行，包括大多数类Unix系统（GNU/Linux、各种BSD、Solaris、AIX、IRIX、AmigaOS、Mac OS X等）、MS-DOS、Microsoft Windows和OpenVMS。Unix系统，无论自由版本或商业版本，均随系统提供Emacs。
- 可扩展和可定制（Lisp的变体 - Emacs Lisp），功能包括：
- 专门的编辑模式，支持大量编程语言、标记语言、排版语言，如Bash、C、Delphi、Java、Lisp、LaTeX、MediaWiki、Python等。
- 可模拟vi（“viper-mode”）。
- 强大可扩展的文件管理器（dired）、智能调试器和大量工具。

## 幽默

在讨论中，人们常提到ed是 标准文本编辑器。

<image>

理查德·斯托曼组建了Emacs教会，这个教会称vi为“魔鬼的编辑器”（vi-vi-vi在罗马数字中表示兽名数目）。然而它并不反对vi；相反的，它视私有软件为诅咒。（“使用自由版本的vi不是罪恶，而是赎罪。”）它还有专门的新闻组，alt.religion.emacs，发布主题宣扬这个滑稽的宗教。

斯托曼曾称自己是St IGNU−cius，Emacs教会的圣人。

vi支持者也成立了对立的vi教，较强硬的Emacs的用户攻击这是“抄袭他们的创意”。

关于vi的模式，一些Emacs用户说vi有两个模式–“不停地哔哔叫”和“搞砸一切”。vi用户则指责Emacs的快捷键会引发腕管综合症，或者拿EMACS这个缩写词作文章，比如“Escape Meta Alt Control Shift”（攻击Emacs太依赖修改键，据vi用户称一些 Emacs 用户由于修改键过多而使用脚踏板，不过 vi 用户也有为切换模式使用脚踏板的）。

一些人断定是代表“Eight Megabytes And Constantly Swapping”（8 MB，还不断进行内存交换，过去这已经是很多内存了），或者“EMACS Makes Any Computer Slow”（EMACS使一切计算机跑得慢，这是斯托曼惯用的递归缩写），讽刺Emacs对系统资源的高需求。

针对Emacs的“功能蔓延”，vi支持者认为Emacs是“一个伟大的操作系统，只缺个体面的编辑器”或“一个伪装成编辑器的操作系统”（在现实生活中，的确有 vi 用户在 Emacs 中打开多种窗口使用各种程序，同时在 Emacs 终端模拟器中使用 vi）。

UNIX用户中流行一个游戏，考验一个Emacs用户对这个编辑器的理解深度，或者是拿Emacs的复杂性开玩笑，内容是：预测一下，如果一个用户按住修改键（比如Control或Alt），然后键入自己的名字，会发生什么事。

Word War vi是一个基于编辑器之战的类似清版射击游戏的防守游戏。

## 目前状况

过去有许多仿照或修改自vi的小型文本编辑器。这是因为在当时计算机条件下，节约内存的使用非常重要。随着电脑配置和功能的强大，许多vi复制品，特别是Vim，大大地提高了体积和代码复杂度。目前，这些vi的变体与过去的轻型Emacs变体相比各有优缺点。例如，不装任何插件的Vim对磁盘空间的要求是vi的十倍，Vim最近的一些版本可以安装更多插件所以要比旧版的Emacs运行速度慢很多。在《Unix编程艺术》一书中，埃里克·雷蒙称，和Emacs一样，Vim期望的轻型“都是神话”。此外，随着计算机内存容量的提高，与大型集成开发环境（例如Eclipse、Visual Studio）相比，Emacs和vi的内存占用几乎可以忽略不计。这往往引发了Emacs和vi用户的嘲笑。

提姆·奥莱理说，1999年，奥莱利的vi教程的销售量是Emacs手册的两倍（不过Emacs的手册是免费的）。许多程序员使用Emacs或vi的分支，例如林纳斯·托瓦兹使用MicroEMACS。同样是在1999年，vi的创造者比尔·乔伊说vi是“为一个不再存在的世界而创造的”，并且认为Emacs才是为性能更高的电脑而编写的，这样程序员就可以享受“有趣的命令，屏幕上闪烁的一切”。“同时，我坐在在伯克利的那种二战剩下的房子中，使用调制解调器和终端，勉强能把光标移动到屏幕底端。”

除了Emacs和vi类编辑器，pico和克隆它的自由软件版本nano，以及其他的文本编辑器（例如ne）也经常有它们自己主张的编辑器大战，但是程度不如Emacs和vi那样。

截止到2014年，Emacs和vi可以说都是最长寿的应用程序。作为在Linux和Unix系统中最常用的两种文本编辑器，许多操作系统，特别是GNU/Linux和BSD，都将多种文本编辑器与操作系统进行捆绑以满足用户需求。例如，OS X默认包含Emacs、ed、nano和Vim。

## 外部链接

- Emacs Wiki, community site dedicated to documenting and discussing Emacs
- Church of Emacs resources
- Rules, Sins, Virtues, Gods and more of The Church of Emacs
- Saint Ignucius—as portrayed by Richard Stallman
- Vi Lovers Home Page
- $EDITOR sucks-rules-o-meter measures which editor's activists are more visible on the Web
- Ed is the standard text editor
- A transcript of Richard introducing St. IGNUcias and the Church of Emacs