Emacs,著名的集成開發(fā)環(huán)境和文本編輯器。Emacs被公認(rèn)為是受專業(yè)程序員喜愛的代碼編輯器之一,另外一個(gè)vim。
EMACS,即Editor MACroS(編輯器宏)的縮寫,最初由Richard Stallman(理查德·馬修·斯托曼)于1975年在MIT協(xié)同Guy Steele共同完成。這一創(chuàng)意的靈感來源于TECMAC和TMACS,它們是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人編寫的宏文本編輯器。
自誕生以來,Emacs演化出了眾多分支,其中使用廣泛的兩種是:1984年由Richard Stallman發(fā)起并由他維護(hù)至今的GNU Emacs,以及1991年發(fā)起的XEmacs。XEmacs是GNU Emacs的分支,至今仍保持著相當(dāng)?shù)募嫒菪浴?/p>
Emacs使用Emacs Lisp,這種有著極強(qiáng)擴(kuò)展性的編程語言,從而實(shí)現(xiàn)了包括編程、編譯乃至網(wǎng)絡(luò)瀏覽等等功能的擴(kuò)展。
Emacs不僅僅是一個(gè)編輯器,他是一個(gè)整合環(huán)境,或可稱它為集成開發(fā)環(huán)境,這些功能如讓使用者置身于全功能的操作系統(tǒng)中,在基于編輯器的功能基礎(chǔ)上,Emacs自行開發(fā)了一個(gè)“bourne-shell-like”的shell: EShell。Emacs還可以:
收發(fā)電子郵件
通過FTP/TRAMP編輯遠(yuǎn)程檔案
通過Telnet登錄主機(jī)
上新聞組
登陸IRC和朋友交流
查看日歷
撰寫文章大綱
對(duì)多種編程語言的編輯
調(diào)試程序,結(jié)合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等等
玩游戲
計(jì)算器
記日記
管理日程,Task,ToDo,約會(huì)等
個(gè)人信息管理
目錄管理
文件比較
閱讀info和man文檔
瀏覽網(wǎng)站
為各種程序(TeX等)提供統(tǒng)一的操作界面
Emacs在1970年代誕生于MIT人工智能實(shí)驗(yàn)室(MIT AI Lab)。在此之前,人工智能實(shí)驗(yàn)室的ITS上運(yùn)行的操作系統(tǒng)PDP-6和PDP-10的默認(rèn)編輯器是一個(gè)叫TECO(Text Editor and Corrector)的行編輯器。與現(xiàn)代的文本編輯器不同,TECO將擊鍵、編輯和文本顯示按照不同的模式進(jìn)行處理,稍晚出現(xiàn)的vi與它有些類似。在TECO上擊鍵并不會(huì)直接將這些字符插入到文檔里去,必須先輸入一系列相應(yīng)的TECO指令,而被編輯的文本在輸入命令的時(shí)候是不會(huì)顯示在屏幕上的。在如今還在使用的UNIX編輯器ed(ed)上,我們還能看到類似的工作方式。
1970年代初,Richard Stallman訪問Stanford AI Lab時(shí)見到了那里的"E" editor。這種編輯器有著所見即所得的直觀特點(diǎn),深深打動(dòng)了Stallman。后來Stallman回到MIT,那時(shí)候MIT AI lab的黑客Carl Mikkelsen 已經(jīng)給TECO加上了稱作“Control-R”的編輯顯示模式,使得屏幕能跟隨用戶的每次擊鍵刷新顯示。Stallman重寫了這一模式,使它運(yùn)行得更有效率,后來又加入了宏,允許用戶重新定義運(yùn)行TECO程序的鍵位。
這一新版的TECO立刻在AI實(shí)驗(yàn)室流行開來,并且很快積累起了大量自定義的宏,這些宏的名字通常就以“MAC”或者“MACS”結(jié)尾,意為“宏”(macro)。兩年后,Guy Steele承擔(dān)起統(tǒng)一當(dāng)時(shí)存在的各種鍵盤命令集的工作。Steele和Stallman經(jīng)過一夜奮戰(zhàn),最終由Stallman完成了這一任務(wù),包括一套擴(kuò)展和注釋新的宏包的工具。這個(gè)完成的系統(tǒng)被稱作EMACS,代表“Editing MACroS”。根據(jù)Stallman的說法,他采用這個(gè)名字是“因?yàn)楫?dāng)時(shí)
Stallman意識(shí)到過多的定制、在開發(fā)過程中事實(shí)上的分支以及針對(duì)特殊用途的限制,威脅著Emacs的發(fā)展。后來他寫道:
“Emacs的發(fā)布基于社群共享,這意味著所有的發(fā)展都要反饋給我,由我進(jìn)行整合和發(fā)布。("EMACS was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed.") ”
最初的Emacs同TECO一樣只能運(yùn)行在PDP-10系統(tǒng)。Emacs雖然是在TECO的基礎(chǔ)上發(fā)展起來的,不過它已經(jīng)足以被認(rèn)為是一個(gè)新的文本編輯器了。很快,Emacs就成為ITS上的標(biāo)準(zhǔn)編輯程序,接著由Michael McMahon移植到Tenex和TOPS-20系統(tǒng)上。