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