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

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

vi與Emacs的不同

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

More information 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]
Close

vi類型編輯器的優點

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

Emacs的優點

幽默

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

Thumb
理查德·斯托曼,身份是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。

註釋

參考

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.