Emacs,,著名的集成開發(fā)環(huán)境和文本編輯器。Emacs被公認(rèn)為是受專業(yè)程序員喜愛的代碼編輯器之一,,另外一個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不僅僅是一個編輯器,,他是一個整合環(huán)境,或可稱它為集成開發(fā)環(huán)境,,這些功能如讓使用者置身于全功能的操作系統(tǒng)中,,在基于編輯器的功能基礎(chǔ)上,Emacs自行開發(fā)了一個“bourne-shell-like”的shell: EShell,。Emacs還可以:
收發(fā)電子郵件
通過FTP/TRAMP編輯遠(yuǎn)程檔案
通過Telnet登錄主機(jī)
上新聞組
登陸IRC和朋友交流
查看日歷
撰寫文章大綱
對多種編程語言的編輯
調(diào)試程序,,結(jié)合GDB,EDebug等,。支持C/C++,,Perl,Python,,Lisp等等
玩游戲
計算器
記日記
管理日程,,Task,ToDo,,約會等
個人信息管理
目錄管理
文件比較
閱讀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)編輯器是一個叫TECO(Text Editor and Corrector)的行編輯器,。與現(xiàn)代的文本編輯器不同,,TECO將擊鍵、編輯和文本顯示按照不同的模式進(jìn)行處理,,稍晚出現(xiàn)的vi與它有些類似,。在TECO上擊鍵并不會直接將這些字符插入到文檔里去,必須先輸入一系列相應(yīng)的TECO指令,,而被編輯的文本在輸入命令的時候是不會顯示在屏幕上的,。在如今還在使用的UNIX編輯器ed(ed)上,我們還能看到類似的工作方式,。
1970年代初,,Richard Stallman訪問Stanford AI Lab時見到了那里的"E" editor。這種編輯器有著所見即所得的直觀特點(diǎn),深深打動了Stallman,。后來Stallman回到MIT,,那時候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)時存在的各種鍵盤命令集的工作,。Steele和Stallman經(jīng)過一夜奮戰(zhàn),最終由Stallman完成了這一任務(wù),,包括一套擴(kuò)展和注釋新的宏包的工具,。這個完成的系統(tǒng)被稱作EMACS,代表“Editing MACroS”,。根據(jù)Stallman的說法,,他采用這個名字是“因?yàn)楫?dāng)時
Stallman意識到過多的定制,、在開發(fā)過程中事實(shí)上的分支以及針對特殊用途的限制,威脅著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)為是一個新的文本編輯器了,。很快,,Emacs就成為ITS上的標(biāo)準(zhǔn)編輯程序,,接著由Michael McMahon移植到Tenex和TOPS-20系統(tǒng)上。