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