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