Emacs詳細教程
轉自:http://www.cnblogs.com/holbrook/archive/2012/02/15/2357335.html
內容提要
1.Emacs是什麼
2. Emacs能做什麼
3. Emacs的介面
4.基本概念--命令
5. 基本概念--快捷鍵
6. 基本概念--模式
Emacs學習筆記2: 初識Emacs
1.Emacs是什麼
其實很難給Emacs下一個定義。正統的說法也許是"Emacs即Editor MACroS(巨集編輯器),是一種文字編輯器"。
最初人們認為Emacs是一個編輯器(Editor),與Vim一起並稱為兩大神器,據說Vim是編輯器之神而Emacs是神之編輯器,又據說世界上的程式設計師分三種,一種使用Emacs,一種使用vim,剩餘的是其它。
也有人認為Emacs是一個架構在編輯器上的整合環境,除了最基本的編輯功能,還可以完成檔案管理、終端模擬、瀏覽網頁、收發郵件、編譯程式等工作,以及煮咖啡。
更有人說Emacs是偽裝成編輯器的作業系統,甚至說Emacs是一種信仰。
Emacs最初由RichardStallman在1975年開發,之後產生了眾多的衍生版本,而目前使用得最多的兩個版本是RichardStallman在1984年開發的GNUEmacs和1991年由JamieZawinski寫成的XEmacs。Emacs可謂歷史悠久,目前的GNU Emacs的版本是23.4。一部Emacs的歷史,等於一部計算機史,一部世界黑客史。本文不想將編輯器大戰的戰火燒到這裡,所以還是就此打住,來看看Emacs能做什麼。
2. Emacs能做什麼
據我所知,Emacs 的能力包括: 1. 編輯文字 2. 編輯程式 3. 作為其它程式的介面 4. 作為作業系統 5. 煮咖啡 |
Emacs是一個具有超強擴充套件性,超強定製性的操作平臺,它能做什麼取決於你對它的定製和擴充套件。Emacs之所以強大,就來源於其近乎無限的可定製性和可擴充套件性。
3. Emacs的介面
未定製的Emacs如下圖所示:
整個視窗在Emacs中叫做frame,圖形介面下的Emacs可以開啟多個frame。每個frame從上到下分成3部分,分別是緩衝區,狀態列和回顯區。
緩衝區是編輯的主區域,但是在這裡操作的還不是真正的檔案,而是檔案的一個快取(buffer)。只有執行寫入操作時,才會將buffer的內容寫入到檔案。緩衝區可以分成多個區域,緩衝不同的內容。這些區域在Emacs中成為"視窗"。
緩衝區之下是狀態列,顯示當前的一些狀態資訊,比如圖中從左至右依次為:
U: 當前的檔案編碼是UTF-8, 如果是GBK會顯示c
**: 檔案狀態,**表示未儲存,--表示可寫,%%表示只讀
Emacs1: 是當前編輯的檔案的名稱
All: 表示當前緩衝區已經顯示檔案的所有內容,否則會顯示比如Bot,表示處於檔案的末尾處
L23: 當前游標所在的行數
fundamental: 當前的模式
等等,不同發行版的Emacs顯示的狀態列內容可能會有所不同。
最下面是回顯區,提示當前正在進行的操作。比如"檔案已儲存"之類的資訊。如果一個命令沒有輸入完,這裡還會顯示已經輸入的指令,提示使用者。
4.基本概念--命令
對Emacs所有的操作都是通過呼叫命令實現的。對於一些常用的命令,會定義快捷鍵以便快速使用。
不管是否有快捷鍵,都可以通過M-x command 的方式執行命令。(M-x即Alt+x,是一種快捷鍵,後面會有介紹)比如輸入回車,相當於:
M-x newline
通過M-x執行命令時,可以使用 TAB 補全,使用 M-p 上翻, M-n 下翻。
Emacs中的取消通常是連按三下ESC:
ESC ESC ESC (M-x keyboard-escape-quit)
但是在命令執行過程中,有可能該命令無法使用(比如有些命令是互動式的,需要輸入一些引數),所以中止一條命令的執行最好使用C-g (M-x keyboard-quit)。
5. 基本概念--快捷鍵
本質上,快捷鍵只是一種傳送命令的方法!
Emacs的快捷鍵通常以組合鍵的方式定義。如M-x 表示Alt+x。前面的字母M代表修飾符,Emacs定義的修飾符如下:
C-:Control
M-: Alt(應該是Meta,在 PC 上,Meta鍵 通常對應 Alt 鍵)
C-M-: 同時按住 Ctrl 和 Alt
S-:Shift
RET:Return
TAB:Tab
ESC:Esc,等價於M-。比如,C-M-r ,等價於ESC C-r
SPC:空格鍵
DEL:退格鍵
Delete:刪除鍵
上面提到了ESC C-r。這是一種組合方式,表示先按ESC,再按C-r。Emacs中的很多快捷鍵定義成組合的方式。如 C-x C-c(M-x save-buffers-kill-emacs)
此外還有些命令可以傳遞引數,在Emacs的表示法中用 (#) 代表。如:
C-u (#) C-f 代表重複#次C-f
6.基本概念--模式
Emacs是一種“有模式”的編輯器。如果用過Vim就很容易理解。不過Emacs中的模式分成主要模式(major mode)和次要模式(minor mode)兩種。
主要模式由檔案型別決定,每個buffer開啟檔案時會根據檔案型別決定其主要模式。常見的主要模式有:
fundamental-mode:預設的 Emacs 模式,擁有最少設定和繫結 text-mode:編輯文字的基本模式 c-mode:用於編輯 C 程式原始碼 lisp-interaction-mode:用於編輯和編譯 Lisp 程式碼 ptex-mode:用於編輯 TeX 文件 |
次要模式可以組合到主要模式中,常見的次要模式比如:
abbrev-mode:用於生成和使用縮寫 auto-fill-mode:用於自動文字迴繞、填充較長的行和段落 line-number-mode:顯示當前行號 overwrite-mode:覆蓋模式,代替預設的插入模式 |
可以通過命令來指定模式:M-x mode_name
對於一個buffer來說,當前的主要模式只能有一種,當指定主要模式時,原來的主要模式會被替換;而當前的次要模式可以有多種。
如果輸入的模式包含在當前模式中,對於主要模式,會清空所有的次要模式;對於次要模式,會關閉這個次要模式。
模式的變化在狀態列中可以看到。
Emacs學習筆記(3):幫助系統
GNU的軟體大多有豐富的幫助系統,學習GNU的軟體時,首先學習如何使用其幫助系統,往往事半功倍。Emacs的幫助文件很多,並大部分都在C-h開頭的組合鍵中。
首先是C-h ?,關於幫助系統的“幫助”。改命令會開啟一個新的Frame,如下圖:
從該文件中摘錄常用的幫助功能如下:
快捷鍵 | 命令 | 說明 |
---|---|---|
C-h ? | 關於幫助系統的幫助,可以通過SPC和DEL鍵滾動,通過ESC退出 | |
C-h t | M-x help-with-tutorial | 進入 《Emacs 快速指南》 |
C-h r | M-x info-emacs-manual | Emacs使用手冊 |
C-h i | M-x info | 《Emacs說明》 |
C-h a | M-x apropos-command | 搜尋命令》 |
C-h v | M-x describe-variable | 檢視變數說明》 |
C-h f | M-x describe-function | 檢視函式說明》 |
C-h m | M-x describe-mode | 檢視當前mode的相關文件,包含mode中的命令、快捷鍵等》 |
C-h k KEYS | M-x describe-key KEYS | 檢視快捷鍵對應的命令及其簡要說明,比如C-h k C-x C-c,會告訴你C-x C-c是做什麼的》 |
C-h c KEYS | M-x describe-key-briefly | 檢視鍵繫結說明》 |
C-h w | M-x where-is | 檢視某個命令對應的快捷鍵》 |
C-h b | M-x describe-bindings | 檢視當前buffer所有的快捷鍵列表》 |
KEYS C-h | 檢視當前buffer中以某個快捷鍵序列開頭的快捷鍵列表,比如C-c C-h》 | |
M-x apropos | 檢視匹配某個關鍵詞的任何東西,如函式,變數,命令,模式等》 |
1. C-h t 《Emacs快速指南》是迅速上手最好的文件。
2. 使用幫助時,可能會分割出其它Frame,可以通過 C-x 1 關閉。
Emacs學習筆記(4):基本的編輯功能
掌握了Emacs的幫助系統,就可以自己隨時學習了。但是還是應該有一個主線。儘管Emacs能做的事情很多,但首先Emacs是一個編輯器。所以還是應該從文字編輯的功能開始。完成本節的內容後,可以應付日常的大部分編輯工作。
內容提要
- 檔案操作
- 游標定位
- 輸入刪除
- 複製貼上
- 撤銷重做
1.檔案操作
檔案操作的快捷鍵都集中在C-x"選單"中:
快捷鍵(C-x) 命令(M-x) 說明
C-x C-f find-file 開啟檔案或錄
C-x C-c save-buffers-kill-emacs 儲存退出
C-x C-z iconify-or-deiconify-frame 掛起(最小化)
C-x C-f find-file 開啟檔案、目錄
C-x C-r find-file-read-only 以只讀模式開啟
C-x i insert-file 插入檔案
C-x C-s save-buffer 儲存
C-x s save-some-buffers 儲存所有未儲存的緩衝區
C-x C-w write-file 另存為檔案
C-x RET r revert-buffer-with-coding-system 以指定編碼讀取檔案
C-x RET f set-buffer-file-coding-system 以指定編碼儲存檔案
revert-buffer 恢復到原始狀態
C-x d dired 進入目錄列表模式
C-x C-d list-directory 獲取檔案列表(簡潔)
2. 游標定位
向前 向後 向下 向上
翻頁 C-v M-v
字元 C-f C-b C-n C-p
單詞 M-f M-b
句 M-a M-e
行 C-a C-e
段落 M-{ M-}
緩衝區 M-< M->
其它:
M-g M-g (goto-line) 跳轉到某行
M-x (goto-char) 跳轉到字元位置:
C-M-l (reposition-window) 將當前行卷至頁面中部
C-l (recenter) 重新整理頁面,將將當前行卷至頁面中部 (使用數字引數指定行)
M-r M-x (move-to-window-line) 移動游標至頁面中間的行 (使用數字引數指定行)
3.輸入刪除
輸入很簡單,在緩衝區直接敲鍵盤就OK了(這個不像Vim)
刪除:
向前 向後
字元 C-d DEL
單詞 M-d M-DEL
行 C-k(刪除至行尾)
整行 C-S-backspace
按表示式刪除 C-M-k
區塊 C-w
刪除連續空格 M-x delete-horizontal-space
注1:在PC中,用Backspace代替DEL
注2:單詞、行、區塊的刪除是kill,相當於剪下,會被放入kill-ring,字元及空格的刪除是delete
4.複製貼上
複製前要先選擇:C-@開始區塊選擇,然後移動游標,選中的區域會高亮
剪下:前面"刪除"的部分包括了一些剪下操作,對區塊的剪下用C-w
複製:區塊複製用M-w,至於複製1行,複製1個單詞之類的功能,自己想辦法吧:(
貼上: C-y:貼上kill-ring堆疊的最後一次的內容
C-y 之後可以繼續M-y, 對Kill-ring中的內容依次召回
5.撤銷重做
撤銷: C-/ (每插入20個字元,視為一個 undo 的單位)
重做: C-/ 後,依次輸入C-g C-/ 就可以redo
Emacs學習筆記(5):更有效率的編輯
前面學習了Emacs的基本編輯功能。為了讓編輯更有效率,還需要了解:
- 視窗管理
- 緩衝區管理
- 搜尋和替換
- 批量處理
視窗管理
C-x 2 split-window-vertically 水平分割
C-x 3 split-window-horizontally 豎直分割
C-x 1 delete-other-window 只保留當前窗格
C-x 0 delete-window 關閉當前窗格
C-x o other-window 切換窗格
C-M-v scroll-other-window 滾動下一個窗格
緩衝區管理
Emacs中,開啟新的buffer,不會關閉原有buffer,而是需要手工操作:
C-x C-b list-buffers 檢視緩衝區列表
C-x b switch-to-buffer 切換緩衝區
C-x k kill-buffer 關閉緩衝區
其他:可以參考ibuffer.el擴充套件
搜尋和替換
Emacs中的搜尋包括增量搜尋和一般搜尋。增加搜尋是每次在前一次搜尋的結果基礎上繼續搜尋。在增量搜尋時,如果上一次搜尋之後進行了其他操作,則需要連續按兩次快捷鍵才能召回關鍵詞。
可以選中區塊後在區塊內進行搜尋
增量搜尋
C-s M-x isearch-forward 向前增量搜尋
C-r M-x isearch-backward 向後增量搜尋
C-M-s M-x isearch-forward-regexp 正規表示式向前增量搜尋
C-M-r M-x isearch-backward-regexp 正規表示式向後增量搜尋
一般搜尋
M-x search-forward 向前搜尋
M-x search-backward 向後搜尋
M-x search-forward-regexp 正規表示式向前搜尋
M-x search-backward-regexp 正規表示式向後搜尋
替換
M-x replace-string 替換
M-x replace-regexp 正規表示式替換
詢問替換
M-% M-x query-replace 詢問替換
C-M-% M-x query-replace-regexp 正規表示式詢問替換
取消搜尋
C-g 取消搜尋,游標返回搜尋前的位置
RET結束搜尋,游標停留在當前位置。
批量處理
批量處理的命令應該有很多,這裡列出2個:
選中區域, M-x untabify:將 TAB 字元轉換為空格
選中區域, M-x indent-region:對齊文字塊
Emacs學習筆記(6):常用命令備忘(列印版)
部落格搬家,加上換辦公區,Emacs的學習計劃就耽擱了。
可能是因為年紀大了,記性大不如以前,新學的很多Emacs快捷鍵/命令都記不住。所以要整理一個常用命令清單(與當初學習Vim一樣),並且列印出來貼在電腦邊。
剛開始不可貪多,所以只整理了:
Key Mapping, Important, Help, File, Cursor, Cut/Del/Copy/Paste, Buffer, Window, Undo/Redo, Search/Replace幾個部分,控制在2頁A4紙之內。
附圖如下:
不知道誰能告訴我,部落格園可以上傳附件嗎?
macs學習筆記(7):簡單的配置
繼續Emacs學習計劃。這是“初學者”階段的最後一篇。完成本節的內容,就可以向“中級計劃”進軍了 : )
經過一段時間的使用,已經大體適應了Emacs的快捷鍵,不過還是要參考命令備忘表。
Emacser通常要對Emacs進行定製,使用起來才會爽。據說Vimer嘲笑Emacser的一個理由就是:
Emacser如果丟了配置檔案就什麼都幹不了。
好吧好吧,這些爭論和我沒什麼關係,我只是恰好原來用Vim現在喜歡上了Emacs。還是回到Emacs的簡單定製吧。
1. 配置檔案
Emacs的配置檔案在~/.emacs。現在就用Emacs開啟這個檔案吧,如果沒有就建立一個。首先改一下顏色配置,讓Emacs看起來更酷一些:
(set-background-color "black") ;; 使用黑色背景
(set-foreground-color "white") ;; 使用白色前景
(set-face-foreground 'region "green") ;; 區域前景顏色設為綠色
(set-face-background 'region "blue") ;; 區域背景色設為藍色
儘管可以重啟Emacs使配置生效,但更快捷的方式是在開啟~/.emacs的時候執行命令M-x eval-buffer,就可以使配置檔案立即生效。
2. 安裝外掛
Emacs和Vim都有大量的外掛,一些經久不衰、廣泛使用的外掛組合起來,就體現出一種"集體智慧"。
Emacs的外掛一般都是一個以el為字尾名的檔案。首先要指定一個外掛目錄,比如~/.emacs.d/lisps然後在~/.emacs中指定外掛目錄和要使用的外掛:
(add-to-list 'load-path "~/.emacs.d/lisp/")
(require 'pluginname')
還是玩一下顏色設定。前面的方法只是進行了一些簡單的顏色設定,但是有熱心人寫了外掛,配置好了很多方案,不僅僅是前景背景色,還包括語法高亮等。從這裡下載,解壓後將color-theme.el檔案和themes資料夾複製到外掛目錄,然後修改配置檔案:
(add-to-list 'load-path "~/.emacs.d/lisp/")
(require 'color-theme)
(color-theme-initialize)
M-x eval-buffer使配置生效後,可以執行外掛提供的命令:M-x color-theme-select RET進入配色方案選擇介面。我選擇的是Classic
選好之後,你可能希望將配色方案設成預設,還是修改配置檔案。在配色方案選擇介面中選擇主題後按d,會出現該配置的提示資訊,比如:
color-theme-classic is an interactive Lisp function in
`color-theme-library.el'.
(color-theme-classic)
Color theme by Frederic Giroud, created 2001-01-18.
AntiqueWhite on darkslategrey scheme. Based on Gnome 2, with my favorit
color foreground-color and fontlock color.
將類似(color-theme-classic)的內容新增到.emacs中,就可以每次啟動Emacs時自動選擇配色方案了。
3. 進階
不要迷信自己,不要一開始就嘗試自己定製Emacs。一定要參考甚至抄襲大牛們的設定。比如Steve Purcell。學習他們的配置,不僅能讓你直接學會“最佳實踐”,更能加深你對Emacs的理解。
最後再回顧一下《Emacs初學者的學習計劃》:
1. 要學習必須有一個計劃
5. 其實你可以更快地編輯
完成這些內容,可以說是對Emacs入門了,接下來可以學習如何用Emacs寫程式碼,GTD,發郵件,瀏覽網頁等等,在實現這些目標的同時提高自己的Emacs水平,最終將Emacs上升到一種信仰。
相關文章
- Emacs詳細使用說明(轉)Mac
- Vuex詳細教程Vue
- Vagrant詳細教程
- Nginx 詳細教程Nginx
- Vue Router詳細教程Vue
- 收藏|Numpy詳細教程
- SourceTree詳細使用教程
- Git使用詳細教程Git
- 轉 Git使用詳細教程Git
- Apollo 配置中心詳細教程
- yarn詳細入門教程Yarn
- 介面文件生成詳細教程
- IIS部署WCF詳細教程
- gulp入門詳細教程
- FckEditor(CKEditor)配置詳細教程
- Emacs 教程中文版(轉)Mac
- Redis安裝教程(超詳細)Redis
- windows安裝mongodb詳細教程WindowsMongoDB
- 超詳細kafka教程來啦Kafka
- Kafka詳細教程加面試題Kafka面試題
- 抖音文案號操作詳細教程
- Linux grep命令詳細教程Linux
- Jmeter安裝配置詳細教程JMeter
- RHEL 6.3 詳細安裝教程
- Spring-Aop詳細教程Spring
- Argo CD 詳細入門教程Go
- Linux文字處理詳細教程Linux
- 超詳細!Vuex手把手教程Vue
- SSM三大框架整合詳細教程SSM框架
- Centos下Elasticsearch安裝詳細教程CentOSElasticsearch
- rabbitmq簡易安裝詳細教程MQ
- Fiddler 抓包詳細使用教程
- 【轉】Python之Numpy詳細教程Python
- dnsmasq劫持和dns教程詳細解析DNS
- sublime安裝外掛詳細教程
- WEB PC 管理端打包詳細教程Web
- Hadoop叢集安裝詳細教程Hadoop
- 詳細Fildder抓包Android教程Android