編輯器之戰

編輯器之戰是指電腦編程領域內，兩類文本編輯器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