編輯器之戰是指電腦編程領域內,兩類文字編輯器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)。後來的衍生版本,如MacVim和gVim,都具備全功能的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] |
幽默
在討論中,人們常提到ed是標準文字編輯器 (頁面存檔備份,存於互聯網檔案館)。
理查德·斯托曼組建了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),然後鍵入自己的名字,會發生什麼事。
目前狀況
過去有許多仿照或修改自vi的小型文字編輯器。這是因為在當時電腦條件下,節約主記憶體的使用非常重要。隨着電腦組態和功能的強大,許多vi複製品,特別是Vim,大大地提高了體積和代碼複雜度。目前,這些vi的變體與過去的輕型Emacs變體相比各有優缺點。例如,不裝任何外掛程式的Vim對磁碟空間的要求是vi的十倍,Vim最近的一些版本可以安裝更多外掛程式所以要比舊版的Emacs執行速度慢很多。在《Unix編程藝術》一書中,埃里克·雷蒙稱,和Emacs一樣,Vim期望的輕型「都是神話」。[19]此外,隨着電腦主記憶體容量的提高,與大型整合式開發環境(例如Eclipse、Visual 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/Linux和BSD,都將多種文字編輯器與作業系統進行捆綁以滿足用戶需求。例如,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.