Emacs是一種功能超強的文本處理程序,或者文本編輯器。做者Richard Stallman(主
頁:http://stallman.org/)。基礎部分是使用C語言編寫的,其餘部分是用Emacs Lisp編寫的。深層次的話,C語言構成了emacs的底層,包括Emacs Lisp的解釋器。而Emacs Lisp則是負責了Emacs Lisp的建築物上層,也就是包括咱們平時用的擴展、界面等。編程
Emacs只是一文本編輯器,這和Windows上的Visual Studio等等不一樣的是,VS集成的是完整的開發功能,包括編譯器、編輯器、調試器等等。而Emacs只是一個文本編輯器,固然不要所以而是否認Emacs的強大。Emacs能夠作的:小程序
收發電子郵件、經過FTP/TRAMP編輯遠程檔案、經過Telnet登陸主機、上新聞組、登錄IRC和朋友交流windows
查看日曆、撰寫文章大綱
架構
對多種編程語言的編輯、調試程序,結合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等等
編程語言
玩遊戲、計算器、記日記
編輯器
煮咖啡、管理日程,Task,ToDo,約會等、我的信息管理、目錄管理函數
文件比較、閱讀info和man文檔、瀏覽網站工具
他確實只是一個文本處理器,你能夠將之視爲僞編輯器的操做系統。而這是由於其與unix/Linux系統的整合程度而起的,換句說,若是Richard Stallman能夠早點開發出內核,而不是等到Linux的話。Linux/Unix的設計思想之一就是:簡單,使用足夠的小程序來支撐起這世界,而是Emacs所作的就是利用這些工具,來打造本身,完成本身的系統。於是,Emacs強大的另外一點是,有足夠的擴展,不管是過去的auto-complete或者是如今的Android-mode等等。故而,咱們能夠在《架構之美》之中看到關於其的介紹,而是他的特性也是如此,助長的特性是其優點。網站
也因些,Emacs是Unix世界的兩大神器之一,另一個是Vim/Vi。spa
Emacs的設計預想是須要時只須要啓動一次,而後一直運行着。咱們能夠對窗口進行分割,打開多個文件進行編輯。Emacs的三種基本對象是:幀(frame)、窗口(window)、緩衝區(buffer)。
Emacs中的frame就是操做系統中的窗口.
buffer是文件的內存表示, windows則是顯示buffer的區域, 一個frame中能夠有多個window, Emacs則能夠有多個frame.
窗口. 因爲Emacs很早就誕生了, 它的窗口概念和如今基於窗口的操做系統中的窗口概念不是同樣的. Emacs中的窗口是用來顯示buffer的一個區域. 它並不像操做系統中的窗口擁有本身的標題欄,系統菜單欄.
緩衝區. Emacs並不直接對文件進行操做, 它是把文件加載進buffer, 用戶直接操做buffer, 只有當用戶肯定把buffer中所作的修改寫人文件時, Emacs才把buffer中的內容寫入文件. buffer實際上就是一個內存緩衝區, 這和通常編輯器中都同樣, 應該很好理解.
Emacs最基礎的部分是用c寫的,其餘部分都是用Emacs Lisp語言寫的,Emacs Lisp語言是基於lisp語言的. lisp是LISt Processor的縮寫, 即鏈表處理語言, 因此lisp語言的操做都是基於鏈表的, 它的語法也是鏈表結構, 鏈表第一個元素表示函數名, 其餘元素是參數, 好比一般語言中的a+b, 在lisp就是(+ a b)
mode有major mode和minor mode之分, 每一個緩衝區對應一個major mode, 也只有一個major mode, 可是能夠有多個minor mode. Emacs對每一種文件都有一個mode.
你對Emacs全部的操做都是對Emacs的命令的調用。好比,你在text-mode裏,當你按下任何字母鍵進行編輯的時候,其實是調用的emacs的命令self-insert-command.
Emacs中Control鍵用C表示,Alt鍵用M表示, 即: C-c表示Control C, M-x表示Alt x.
除掉以Alt鍵開頭的,好比Alt a,Emacs中的快捷鍵基本上都有一個前綴,Emacs中最多的快捷鍵前綴就是C-x,C-c,前綴表示,你沒必要要一塊兒按下前綴和後綴,能夠先按下前綴,Emacs會等待你按下剩餘的快捷鍵,這樣Emacs中的快捷鍵按起來很是的方便。
鍵盤映射. Emacs的快捷鍵是經過keymap來控制的. 有全局和局部的keymap. 每一個mode都會有一個本身的局部的keymap, 局部的keymap會覆蓋全局的keymap, 另外若是對應的major mode有開啓的minor mode, 並且這個minor mode有keymap的話, 這個minor mode的keymap會覆蓋major mode的keymap.