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