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