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