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