編輯器之戰

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. 

外部連結

編輯