進度條

編輯器大戰二部曲-除了Vi/Vim,你必須三分鐘補完的Emacs小歷史

Emacs? Vim? 還是其他? 請問你是哪一派呢?

作者: Vincent Ke 更新日期:

 

在工程師耳語之間常有一段話流傳著,這世界上的編輯器流派只有三個,一個是Emacs派,一個是Vim,剩下的就是其他;對許多初學者而言,一開始學習使用Vi/Vim要付出較高的時間成本,於是反而轉向Emacs下手;也有一派人認為使用Emacs是一種信仰,如果Vim是編輯器之神,那Emacs就是神之編輯器,而這段戰爭也開打多年了,今天就從科普的角度來介紹一下Emacs的淵遠流長吧。

 

校正小編:
如果你是要看如何跳出Emacs的話,只要Control + x 後做Control + c就可以了喔!!
上圖是Emacs 進入頁面的功能鍵教學,直接執行指令Emacs就可以看到這頁。
圖裡面有這句 Exit Emacs:  C-x C-c
其中 C- 就是指Control = ctrl 鍵
意思是壓著ctrl 鍵 + x鍵後,再押著ctrl 鍵 + c鍵,就可以跳出。
其他指令依此類推。

 

 

內置圖片 1

 

過去在MIT人工智慧實驗室(MIT AI Lab) 的PDP-6和PDP-10電腦上的ITS作業系統預設編輯器,是一個叫TECO(Text Editor and Corrector)的行編輯器,他比Vi的年紀還要大,但是使用的方式有點類似,也就是透過"模式"來把輸入、編輯及顯示上來分別做處理,而若是你直接鍵入字元並插到文件裡,也必須透過指令的方式來執行。而在TECO上被編輯的文字在輸入命令時,並不會顯示在螢幕上(僅管現在這樣的方式再UNIX編輯器ed上還是有出現),像這樣"所見不能所得"的使用方式,對當時的工程師來說,真的不僅是困擾,也是學習上的負擔。

 

而Emacs則在1970年代誕生於MIT人工智慧實驗室。在此之前,人工智慧實驗室的PDP-6和PDP-10電腦上執行的ITS作業系統的預設編輯器是一個叫TECO(Text Editor and Corrector)的行編輯器。與現代的純文字編輯器不同,TECO將輸入、編輯和文字顯示按照不同的模式進行處理,稍晚出現的vi與它有些類似。在TECO上輸入並不會直接將這些字元插入到文件裡去,必須先輸入一系列相應的TECO指令,而被編輯的文字在輸入命令的時候是不會顯示在螢幕上的。在如今還在使用的UNIX編輯器ed上,我們還能看到類似的工作方式。

 

內置圖片 2

 

而1970年代初,Richard Matthew Stallman(有沒有覺得這個人的名字很熟悉,對,他就是GNU的創辦人,也是自由軟體基金會的成立者),他在存取斯坦福大學人工智慧實驗室(Stanford AI Lab,不是MIT)時,見識到了那裡的"E" editor,並被他所見及所得的直覺、直觀等特點,深深的成為Stallman的心頭肉,也成為了現在大部分的編輯器都具有的特性,畢竟看的到的東西使用起來也才會比較直覺嘛。

 

而Stallman回到MIT之後發現自己家的Hacker Carl Mikkelsen透過「Control-R」的編輯顯示模式,讓TECO可以依據每一次用戶每次輸入來重新整理始螢幕顯示,於是透過重寫、改正已及加入巨集等方式,使新版的TECO逐漸在MIT AI Lab 打響名號,並且有更多人投入大量自訂巨集的行列,而巨集的命名最後因為巨集本身名稱的關係(macro),最後就會以「MAC」或者「MACS」結尾。

 

內置圖片 7

 

 

在歷經兩年的奮戰之後,Stallman和Guy Lewis Steele Jr.透過統一整理各種巨集並注釋新的巨集包,已及擴充套件等完成EMACS(Editing MACroS ,也代表「E with MACroS」 ),最初的Emacs和TECO相同,只能執行在PDP系列的電腦上。僅管一開始只是巨集和擴充,並且Emacs仍是在TECO的基礎上發展起來的,不過對大部分使用者來說,已經屬於一個全新的純文字編輯器,於是很快就成為ITS上的標準編輯器。

 

在1979年後,Emacs在MIT人工智慧實驗室和其他的相關電腦科學實驗室,成為了主流編輯器。 但開源之父想到的除了編輯器日後的優化外,更擔心過多的客製巨集,不僅造成板控上的困難,再開發過程中也容易會有其他用途限制的分歧,這樣對Emacs未來的定位與發展來說並非好事,於是公開宣稱「Emacs的釋出基於社群共享,這意味著所有的發展都要反饋給我,由我進行整合和釋出 」。

 

而Java之父James Gosling,在1981年寫了「Gosling Emacs」,透過C語言並以Mocklisp作為擴充,作為第一個在Unix上執行的類Emacs編輯器,在1984年,Gosling Emacs成為專有軟體。而在1984年,Stallman開始致力於開發GNU Emacs,目的是利用自由軟體代替專有的Gosling Emacs。

 

GNU Emacs是GNU的第一個專案,一樣以C編寫,並將Emacs Lisp作為擴充語言,並在1985年公開釋出了第一個版號,後來GNU Emacs很快就取代了Gosling Emacs,成為Unix系統上預設的Emacs編輯器。也因為GNU,GNU Emacs 和Emacs都賦予他人自由地對原始檔進行修改和再發行的權利。

 

但到1999年為止,GNU Emacs的開發工作基本上還是屬於封閉的情況。後來這種開發方式在《大教堂和市集》中被稱為「大教堂模式」。從那以後,GNU Emacs專案建了公共開發者的郵寄清單,以及匿名CVS原始碼的存取並在2008年開始使用Bazaar進行版本控制。

 

內置圖片 5

 

而Emacs除了GNU的衍生版本外,還有另外一個廣為人知的XEmacs,是在1991年Lucid公司的Jamie Zawinski等人,以GNU Emacs 19的一個早期alpha版做為基底開發出Lucid Emacs。很快,Lucid Emacs的開發與GNU Emacs就大相逕庭,最後兩邊放棄了合併的想法,而Lucid Emacs就被重新命名為XEmacs;至今為止,XEmacs亦然是最流行的Emacs變種之一,而XEmacs也適用於GNU宣言。

 

而Emacs相較於Vi/Vim 有者許多的特點如下

 

1.編輯方式:

Emacs採取的編輯方式,是可以對不同類型的文字進入相應的編輯模式,即「主模式」(major mode)。Emacs針對多種文件定義了不同的主模式,包括普通文字檔案、各種程式語言的原始檔、HTML文件、TEX與LaTeX文件等等。Emacs 的文本處理能力極為強大,不論是自然語言還是機器語言、HTML、C還是Java 程式,都有做出一句話 (sentence-end)以及一段話(paragraph-start)的區分,也就是說他可以知道在不同的文檔裡,句子和段落的差別。

 

而 Emacs 的優勢不在於擊鍵的速度,它的主要目標是讓使用者可以僅用一個鍵,甚至不按鍵盤,就完成複雜而智慧式的操作。除了操作上的便利外,像是同Highlight的「font lock」,來對文字做顏色上註解,還有自動縮排,插入檔案後的換行、空格等,都是相當便利的功能。

 

2.可客製性

就像剛剛上面提到的XEmacs,Emacs幾乎所有的功能都可以透過C語言和Lisp進行客製,所以大家可以根據自身的需要和偏好對編輯器進行客製,這樣強大而自由的個人客製功能也是Emacs受到廣泛使用的原因之一。如果你寫的Emacs Lisp原始碼確實好用,它通常也會被打包並發布給其他用戶,也許有機會成為Emacs的一部分,像這樣的部分就非常符合開源的精神

 

3.整合式環境開發

Emacs 不僅僅是一個文字編輯器,他比較像一個具有編輯功能的操作系統,可做為開發環境上的整合,也就是所謂的整合式環境開發(Integrated Development Environment,簡稱IDE,也稱為Integration Design Environment、Integration Debugging Environment),例如閱讀email和新聞、瀏覽網頁、管理文件目錄

(dired)、遠端編輯文件、查字典、放 mp3跟泡咖啡等。

 

4.語言

Emacs支援對多種文字的文字編輯,包括UTF-8在內的諸多編碼系統 ,加上對多種字元集、字母系統、書寫系統,以及不同文化的書寫習慣都提供了支援,使得世界上多數語言的使用者,都可以通過Emacs進行文字處理,並可以做出多種語言的拼寫檢查。

 

內置圖片 4

 

而Vi/Vim 與 Emacs的戰火開打迄今,想必大家都聽到了不少兩方的新聞吧,但不論你心中的理想編輯器是哪一個,這樣的戰爭模式似乎也成為了開源社區與駭客文化裡面不可分割的環節了,但記得不管你是哪一派,這世界上一定沒有絕對的對或錯,也要敞開心胸的去接受另外一派的想法唷!

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Medium vincent

Vincent Ke

喜歡把混亂的事情變的簡單 用嘴巴做事其實很可以 但要結合靈活的腦袋思考 就一起來拆解吧