編輯器之戰

Emacs 和 vim 用户之间的竞争

編輯器之戰是指電腦編程領域內,兩類文字編輯器vi(以及衍生版本)和Emacs用戶之間的對抗衝突。這已經成為黑客文化自由軟件社區文化的一部分。

戰火在兩群用戶之間多次點燃,他們互相蔑視,堅信自己的選擇才是最完美的。相比其他的IT領域戰爭(如瀏覽器大戰作業系統之爭、程式語言之爭、代碼縮排風格之戰),編輯器的選擇其實通常只是個人問題。

vi與Emacs的不同

vi與Emacs之間最重要的不同見下表:

vi Emacs
快速鍵命令 vi通過記錄按鍵序列,形成決策樹中的一條路徑,從而確定一個命令。 Emacs通過組合鍵的方式立即執行命令。組合鍵同樣遵循決策樹,但並不屬於獨立的按鍵順序。
主記憶體佔用和客製化性 由於歷史原因,vi小而快,但客製化性上比較受限。而vi的進化版本Vim與vi相比,提供了更多的實用功能,提高了可客製化性。這使得Vim可以與Emacs媲美。[notes 1] 對於小檔案而言,vi幾乎可以做到瞬時打開,Vim也可以接近瞬時。 因為要執行大量的啟動代碼,包括用戶代碼,所以Emacs啟動慢且佔用更多主記憶體(甚至和Vim比也是如此)。但Emacs高度可客製化,包含大量複雜功能。它基本上是一個Lisp程式的執行環境。Emacs 18 (1987年發佈)引入了伺服器模式[3],這樣可以在後台一直執行。可以啟動不同的Emacs客戶端實例,並且附加到這個伺服器上,互相分享狀態。Emacs客戶端也可以做到幾乎瞬間啟動,因為它只是通知已經啟動的Emacs來重新顯示介面。
用戶介面 vi早先獨佔命令列終端,沒有圖形化使用者介面(GUI)。後來的衍生版本,如MacVimgVim,都具備全功能的GUI。但是,這些GUI對等距字型的支援是有問題的,並且它們不支援同一文件主記憶體在不同字號的字型。[4] 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[5]ergoemacs[6]可以把組合鍵替換成比較容易按的按鍵。
語言支援 vi對除英語以外的語言的支援不好。Vim可以部分地支援其他語言,例如阿拉伯語、希伯來語、中文、日文等。 Emacs支援所有相容Unicode的語言。[7]

vi類型編輯器的優點

  • 遵循「簡單工具,多樣組合」的理念。
  • 小,符合Unix哲學中的「只做一件事,並做好它」,避免了功能蔓延
  • 比Emacs快(至少歷史上是這樣的)。
  • 可執行於任何實現了C標準庫的系統之上,包括UNIXLinuxAmigaOSDOSWindowsMacBeOSPOSIX相容系統等等。
  • 讓「QWERTY」鍵盤用戶將手指保持在預設鍵位上,使編輯時手指移動更少。
  • 更普及。基本上所有Unix類Unix系統都預設提供了vi或其變體。

Emacs的優點

幽默

在討論中,人們常提到ed標準文字編輯器頁面存檔備份,存於互聯網檔案館)。

 
理查德·斯托曼,身份是St IGNU−cius,Emacs教會的聖人

理查德·斯托曼組建了Emacs教會,這個教會稱vi為「魔鬼的編輯器」(vi-vi-vi在羅馬數字中表示獸名數目)。然而它並不反對vi;相反的,它視私有軟件詛咒。(「使用自由版本的vi不是罪惡,而是贖罪。」[13])它還有專門的新聞組,alt.religion.emacs,[14]發佈主題宣揚這個滑稽的宗教。

斯托曼曾稱自己是St IGNU−cius,Emacs教會的聖人。[15]

vi支持者也成立了對立的vi教,較強硬的Emacs的用戶攻擊這是「抄襲他們的創意」。

關於vi的模式,一些Emacs用戶說vi有兩個模式–「不停地嗶嗶叫」和「搞砸一切」。vi用戶則指責Emacs的快速鍵會引發腕管綜合症,或者拿EMACS這個縮寫詞作文章,比如「Escape Meta Alt Control Shift」(攻擊Emacs太依賴修改鍵,據vi用戶稱一些 Emacs 用戶由於修改鍵過多而使用腳踏板,不過 vi 用戶也有為切換模式使用腳踏板的)。[16][17] 一些人斷定是代表「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[18]是一個基於編輯器之戰的類似清版射擊遊戲的防守遊戲。

目前狀況

過去有許多仿照或修改自vi的小型文字編輯器。這是因為在當時電腦條件下,節約主記憶體的使用非常重要。隨着電腦組態和功能的強大,許多vi複製品,特別是Vim,大大地提高了體積和代碼複雜度。目前,這些vi的變體與過去的輕型Emacs變體相比各有優缺點。例如,不裝任何外掛程式的Vim對磁碟空間的要求是vi的十倍,Vim最近的一些版本可以安裝更多外掛程式所以要比舊版的Emacs執行速度慢很多。在《Unix編程藝術》一書中,埃里克·雷蒙稱,和Emacs一樣,Vim期望的輕型「都是神話」。[19]此外,隨着電腦主記憶體容量的提高,與大型整合式開發環境(例如EclipseVisual Studio),Emacs和vi的主記憶體佔用幾乎可以忽略不計。這往往引發了Emacs和vi用戶的嘲笑。

提姆·奧萊理說,1999年,奧萊利的vi教程的銷售量是Emacs手冊的兩倍(不過Emacs的手冊是免費的)。[20]許多程式設計師使用Emacs或vi的分支,例如林納斯·托瓦茲使用MicroEMACS[21]同樣是在1999年,vi的創造者比爾·喬伊說vi是「為一個不再存在的世界而創造的」,並且認為Emacs才是為效能更高的電腦而編寫的,這樣程式設計師就可以享受「有趣的命令,螢幕上閃爍的一切」。「同時,我坐在在伯克利的那種二戰剩下的房子中,使用數據機和終端,勉強能把游標移動到螢幕底端。」[22][23]

除了Emacs和vi類編輯器,pico和克隆它的自由軟件版本nano,以及其他的文字編輯器(例如ne)也經常有它們自己主張的編輯器大戰,但是程度不如Emacs和vi那樣。

截止到2014年,Emacs和vi可以說都是最長壽的應用程式。[24]作為在Linux和Unix系統中最常用的兩種文字編輯器,許多作業系統,特別是GNU/LinuxBSD,都將多種文字編輯器與作業系統進行捆綁以滿足用戶需求。例如,OS X預設包含Emacs、ed、nano和Vim。

註釋

  1. ^ 截止到2013年,Vim有1731kLOC (其中C語言是1142000代碼行,Vim指令碼為506000代碼行,Makefile相關為83000代碼行),而GNU Emacs有1623kLOC (C語言僅有299000代碼行,Emacs Lisp佔1270000代碼行,Makefile相關佔54000代碼行).[1][2]因為事實上存在着大量使用Emacs Lisp和Vim指令碼的外掛程式,因此這裏的「代碼行」指的是包含在「直接下載」的那部分代碼。

參考

  1. ^ The GNU Emacs Open Source Project on Open Hub : Languages Page. Ohloh.net. [1 December 2014]. (原始內容存檔於2013-11-08). 
  2. ^ The Vim Open Source Project on Open Hub : Languages Page. Ohloh.net. [1 December 2014]. (原始內容存檔於2013-11-08). 
  3. ^ NEWS.18. [2015-06-12]. (原始內容存檔於2015-06-14). Programs such as mailers that invoke "the editor" as an inferior to edit some text can now be told to use an existing Emacs process instead of creating a new editor. 
  4. ^ syntax.txt. All fonts used, except for Menu and Tooltip, should be of the same character size as the default font! Otherwise redrawing problems will occur. [永久失效連結]
  5. ^ spacemacs. [2015-06-12]. (原始內容存檔於2021-04-26). 
  6. ^ Ergoemacs. [2015-06-12]. (原始內容存檔於2021-04-21). 
  7. ^ International Chars. [2015-06-12]. (原始內容存檔於2021-04-24). 但是在Emacs內部則使用自己的多位元組語言編碼。 
  8. ^ Carbon Emacs Package. [2006-09-27]. (原始內容存檔於2006-01-25). 
  9. ^ Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X. [2006-09-27]. (原始內容存檔於2011-02-23). 
  10. ^ B, Ramprasad. GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000. 2005-06-24 [2006-09-27]. (原始內容存檔於2013-08-23). 
  11. ^ Borgman, Lennart. EmacsW32 Home Page. 2006 [2006-09-27]. (原始內容存檔於2007-03-06). 
  12. ^ GNU Emacs on Windows. Franz Inc. 2006 [2006-09-27]. (原始內容存檔於2019-04-23). 
  13. ^ All about Linux: The unabridged selective transcript of Richard M Stallman's talk at the ANU. [2010-10-30]. (原始內容存檔於2011-10-04). 
  14. ^ alt.religion.emacs newsgroup
  15. ^ Saint IGNUcius - Richard Stallman. [2010-10-30]. (原始內容存檔於2018-01-03). 
  16. ^ satirical expansions of EMACS. [2010-10-30]. (原始內容存檔於2021-04-24). 
  17. ^ 使用腳踏板離合器操控 Vim頁面存檔備份,存於互聯網檔案館).Linuxtoy. (alevchuk/vim-clutch頁面存檔備份,存於互聯網檔案館)) LinuxToy 上的評論區裏面也有一些編輯器腳踏板大戰的內容。
  18. ^ Word War vi site. [2010-10-30]. (原始內容存檔於2021-03-22). 
  19. ^ The Right Size for an Editor. Catb.org. [1 December 2014]. (原始內容存檔於2021-04-18). 
  20. ^ Editor: vi or emacs?. Oreilly.com. 21 June 1999 [1 December 2014]. (原始內容存檔於2014-04-01). 
  21. ^ Jarosław Rzeszótko. Stifflog: Stiff asks, great programmers answer. Stifflog.com. [1 December 2014]. (原始內容存檔於2006年11月8日). 
  22. ^ Vance, Ashlee. Bill Joy's greatest gift to man – the vi editor. theregister.co.uk. September 11, 2003 [June 3, 2014]. (原始內容存檔於2014年6月3日). 
  23. ^ Joy, Bill. The Joy of Unix: Sun Microsystems Co-Founder Bill Joy Charts Where Linux and Free Software Fit Into His Company's Solar System.. 訪談 with Eugene Eric Kim. November 1999 [June 3, 2014]. (原始內容存檔於February 7, 2003).  |journal=被忽略 (幫助)
  24. ^ The Oldest Rivalry in Computing. [2015-06-12]. (原始內容存檔於2018-10-15). two rival programs can stake a claim to being among the longest-lived applications of all time. Both programs are about to enter their fifth decades. Both programs are text editors, for inputting and editing code, data files, raw HTML Web pages, and anything else. And they are mortal enemies. 

外部連結