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