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