快捷鍵組合:
c-x : Ctrl+x
m-x: Alt+x
1. 常用的缺省 Emacs 按鍵前綴
按鍵前綴
描述
C-c
當前編輯模式特有的命令
C-x
文件和緩沖區命令
C-h
幫助命令
M-x
函數名稱
2. 常用的 Emacs 緩沖區和文件函數
綁定
函數名
描述
C-x C-s
save-buffer
將當前的緩沖區保存到磁盤。
C-x s
save-some-buffers
要求將所有未保存的緩沖區保存到磁盤。
C-x C-c
save-buffers-kill-emacs
要求將所有未保存的緩沖區保存到磁盤,並退出 Emacs。
C-x C-z
suspend-emacs
掛起 Emacs 並使之成為一個後台進程。
C-x C-b
list-buffers
列出所有緩沖區。
C-x k
kill-buffer
殺死一個緩沖區(缺省情況下為當前的緩沖區)。
C-x C-q
vc-toggle-read-only
切換當前緩沖區的可讀狀態(如果適用還可以執行版本控制)。
C-x i
insert-file
在插入點插入某個文件的內容。
M - < 移動到緩沖區開頭
M - > 移動到緩沖區末尾
3. 有用的 Emacs 鍵盤輸入(用於移動和導航)
鍵盤輸入
函數
描述
C-p ,
UpArrow
previous-line
將插入點向上移動到上一行。
C-n ,DownArrow
next-line
將插入點向下移動到下一行。
C-f ,RightArrow
forward-char
將插入點移動到下一個字符。
C-b ,LeftArrow
back-char
將插入點移動到上一個字符。
M-f
forward-word
將插入點移動到下一個單詞。
M-b
backward-word
將插入點移動到上一個單詞。
C-v , PgDn
scroll-up
將文本向上滾動一屏。
M-v , PgUp
scroll-down
將文本向下滾動一屏。
Home
beginning-of-buffer
將插入點移到緩沖區的開始處。(在某些版本中,這個鍵被缺省定義為移動到當前行的開始處。)
End
end-of-buffer
將插入點移到緩沖區的末尾。(在某些版本中,這個鍵被缺省定義為移動到當前行的末尾。)
C-a
beginning-of-line
將插入點移到本行的開始處。
C-e
end-of-line
將插入點移到本行的結尾。
M-a
beginning-of-sentence
將插入點移到句子的開始處。
M-e
end-of-sentence
將插入點移到句子的結尾處。
C-{
beginning-of-paragraph
將插入點移到段落的開始處。
C-}
end-of-paragraph
將插入點移到段落的結尾處。
4. 常用 Emacs 編輯命令
鍵盤輸入
函數
描述
Ins
overwrite-mode
切換改寫模式(缺省為關閉)。
Backspace
Del
delete-backward-char
刪除插入點前的字符。
C-d
delete-char
刪除插入點處的字符。
M-d
kill-word
從插入點開始向前刪除字符,直到單詞末尾。
M-Backspace,
M-Del
backward-kill-word
從插入點開始向回刪除字符,直至單詞的開始處。
C-_
undo
撤消您的上一次鍵入或操作
C-q 字符 或XXX
quoted-insert
在插入點插入按鍵本身代表的字符 或由八進制數字(XXX )表示的字符。
C-u 次數 命令
universal-argument
按總的次數 (缺省為 4 次)連續執行命令 。
5. 用來標記和刪除文本的 Emacs 函數
鍵盤輸入
函數
描述
C-Space
set-mark-command
在插入點設置標記。
C-k
kill-line
刪除從插入點到行末的所有文本。
C-w
kill-region
刪除區域。
M-w
kill-ring-save
將區域保存在 kill ring 中,但不刪除它。
C-y
yank
恢復來自 kill ring 的文本。
6. 鼠標操作
鼠標命令
描述
B1
這一命令將設置插入點位置;拖動鼠標左鍵以設置區域。
B1-B1
這一命令標記一個單詞。
B1-B1-B1
這一命令標記一行。
B2
這一命令插入最近被殺死的內容,並把光標移動到插入內容的末尾。
B3
這一命令會設置並突出顯示區域,然後無需刪除就將其放在 kill 緩沖區中。如果某個區域已經被突出顯示並設置,該區域的末尾將移動到您單擊的位置。
B3-B3
這個命令將突出顯示區域,然後刪除它。如果某個區域已經被突出顯示並設置,該區域的末尾將移動到您單擊的位置,此後該區域將被刪除。
7. query-replace 函數的選項
鍵(M-%)
描述
空格、y
替換這個匹配。
Del、n
跳過這一匹配到下一個匹配。
Enter、q
退出 query-replace 。
.
進行本次替換,然後退出 query-replace 。
,
進行本次替換,將光標移動到此處,然後退出 query-replace 。
C-r
指定遞歸編輯。
C-w
刪除這個匹配並遞歸編輯。
C-l
重繪屏幕,並使這一行位於屏幕正中位置。
!
繼續進行所有的替換,而無需再次詢問。
E
編輯替換的字符串。
^
退回到前一次替換。
replace-regexp 和 query-replace-regexp 函數的工作方式是類似的,但是它們使用正則表達式作為要進行替換的字符串。
8. Emacs 搜索和替換命令
綁定
命令或者函數
描述
C-s [字符串 ] [C-w ] [C-y ]
isearch-forward
前向增量地在整個緩沖區中搜索字符串(在缺省情況下,將搜索您上一次給出的搜索字符串,如果存在),C-w 使用從光標處到光標所在單詞的詞尾之間的文本,以及 C-y 使用從光標處到光標所在行的行尾之間的全部內容。
C-r [字符串 ] [C-w ] [C-y ]
isearch-backward
後向增量地在整個緩沖區中搜索字符串 (在缺省情況下,將搜索您上一次給出的搜索字符串,如果存在),C-w 使用從光標處到光標所在單詞的詞尾之間的文本,C-y 使用從光標處到光標所在行的行尾之間的全部內容。
C-s Enter C-w 單詞或者短語
word-search-forward
在整個緩沖區中前向搜索給定的單詞或者短語(不管它們之間如何分隔)。
C-r Enter C-w 單詞或者短語
word-search-backward
在整個緩沖區中後向搜索給定的單詞或者短語(不管它們之間如何分隔)。
C-M-s
isearch-forward-regexp
在整個緩沖區中前向增量搜索給定的正則表達式。
C-M-r
isearch-backward-regexp
在整個緩沖區中後向增量搜索給定的正則表達式。
replace-string
從光標處到緩沖區末尾搜索給定的字符串,並使用給定的字符串來替換它。
replace-regexp
從光標處到緩沖區末尾搜索給定的正則表達式,並使用給定的字符串來替換它。
M-%
query-replace
從光標處到緩沖區末尾搜索給定的字符串,對於搜索到的每個實例,詢問是否使用給定的字符串來進行替換。
C-M-%
query-replace-regexp
從光標處到緩沖區末尾搜索給定的正則表達式,對於搜索到的每個實例,詢問是否使用給定的字符串來進行替換。
9. 高級 Emacs 標記和選擇命令
鍵盤輸入
功能
描述
C-u C-space
移動到標記環中的前一個標記。
C-x C-x
exchange-point-and-mark
交換光標和標記的位置。
M-@
mark-word
標記從光標到當前詞尾的所有文本。
M-h
mark-paragraph
標記當前段落,不管光標處在什麼位置。
transient-mark-mode
切換臨時標記模式。
C-x h
mark-whole-buffer
標記整個緩沖區,不管光標處在什麼位置。
M-B1
設置二次選擇的開始,拖曳鼠標以進行二次選擇。
M-B3
設置二次選擇的結尾。
M-B1-B1
將一個單詞標記為二次選擇。
M-B1-B1-B1
將一行標記為二次選擇。
10. 高級 Emacs 剪切和粘貼命令
鍵盤輸入
功能
描述
M-(num)
C-k
kill-line
剪切行的整數 數目。如果是 0,剪切從光標到該行開頭的全部內容;如果是負數,則反向剪切。
M-k
kill-sentence
剪切從光標到句子的結尾處的內容。
M-z
zap-to-char
刪除從光標到指定的字符之間的所有文本。
M-y
yank-pop
移動到剪切環中的下一個槽位。
M-(num)
C-y
yank
粘貼剪切環中指定槽位的內容。
11. 使用書簽的 Emacs 命令
鍵盤輸入
功能
描述
C-x r mBookmark
bookmark-set
設置一個名為 Bookmark 的書簽。
C-x r l
bookmarks-bmenu-list
列出所有已保存的書簽。
M-x bookmark-delete
bookmark-delete
刪除一個書簽。
C-x r bBookmark
bookmark-jump
跳轉至名為 Bookmark 的書簽中所設置的位置。
M-x bookmark-save
bookmark-save
將所有的書簽保存到書簽文件 ~/.emac.bmk 中。
12. 常見的 Emacs 窗口操作命令
功能
綁定
描述
split-window-vertically
C-x 2
從中間將當前窗口劃分為兩半,垂直地堆疊新的緩沖區。
switch-to-buffer-other-window
C-x 4 b
垂直地將當前窗口劃分為兩半,提示輸入緩沖區以使用底部的窗口,並將其作為活動窗口。
display-buffer
C-x 4 C-o
在另一個窗口中顯示一個緩沖區,提示輸入緩沖區以使用另一個窗口,但保持當前窗口為活動窗口。(如果僅存在一個窗口,那麼垂直地劃分該窗口以顯示另一個緩沖區。)
find-file-other-window
C-x 4 f
在新的緩沖區中打開新的文件,在新的垂直窗口中繪制它。
find-file-read-only-other-window
C-x 4 r
在一個新的只讀緩沖區中打開新的文件,在新的垂直窗口中繪制它。
scroll-other-window
C-M-v
滾動到下一個由 C-x o 切換到的窗口。
scroll-all
切換 scroll-all 次要模式。當它處於打開狀態時,將同時滾動顯示當前窗口中的緩沖區的所有窗口,並滾動均等的相應距離。
other-window
C-x o
將光標移動到下一個窗口,並使其成為活動窗口。
windmove-up
移動到恰好位於當前窗口上方的窗口,如果它存在的話。
windmove-down
移動到恰好位於當前窗口下方的窗口,如果它存在的話。
windmove-left
移動到恰好位於當前窗口左邊的窗口,如果它存在的話。
windmove-right
移動到恰好位於當前窗口右邊的窗口,如果它存在的話。
delete-window
C-x 0
刪除當前窗口,並將光標移動到使用 C-x o 將切換到的下一個窗口。
delete-other-windows
C-x 1
刪除當前窗口之外的所有窗口。
kill-buffer-and-window
C-x 4 0
刪除當前窗口,並剪切它的緩沖區。
split-window-horizontally
C-x 3
將當前窗口從中間劃分為兩半,水平地堆疊新的緩沖區。
follow-mode
切換 follow 次要模式。當它在緩沖區中處於打開狀態時,將所有顯示該緩沖區的窗口連接為一個較大的虛擬窗口。
enlarge-window
C-x ^
使當前窗口增加一行的高度;在其之前使用一個負數,將使得當前窗口減少一行的高度。
shrink-window-horizontally
C-x }
使當前活動窗口減少一列的寬度。
enlarge-window-horizontally
C-x {
使當前活動窗口增加一列的寬度。
shrink-window-if-larger-than-buffer
C-x -
將當前活動窗口的大小縮小到對於它所包含的緩沖區來說可能的最小尺寸。
balance-windows
C-x +
平衡所有窗口的尺寸,使它們的大小大致相等。
compare-windows
將當前窗口與下一個窗口進行比較,在兩個窗口中從光標處開始比較,並在兩個緩沖區中將光標移動到第一個不同的字符處,直到到達緩沖區的末尾為止。
設置EMACS變量
1.有些變量可以包含數值或者字符串,而其他的變量則是“真”或者“假”:如果將一個變量的值設置為 nil ,那麼它的值是“假”,值 t 表示“真”。
2.使用 describe-variable 函數以得到變量的值。當您運行這個函數的時候,Emacs 將打開一個新窗口,該窗口中包含該變量的給定當前
值。如果有的話,還將提供關於該變量的描述。這個函數與 C-h v 按鍵進行了綁定。
3.使用M-x set-variable來進行變量設定
13. Emacs 鍵盤輸入幫助命令匯總
鍵盤輸入
函數
描述
Tab
如果給出了某個命令的一部分,那麼這個命令將執行命令完成功能,顯示給定命令的所有可能的輸入值。
command prefix 或者keystroke C-h
這個命令用於描述給定命令前綴 或者鍵盤輸入 的所有可能的命令和函數。
C-h c keystroke
describe-key-briefly
這個命令將在迷你緩沖區中報告與給定鍵盤輸入 進行了綁定的函數名稱。
C-h k keystroke
describe-key
這個命令將打開新的幫助緩沖區窗口,其中描述了與給定鍵盤輸入進行了綁定的函數。
C-h l
view-lossage
這個命令將打開新的緩沖區,並顯示最後鍵入的 100 個字符。
open-dribble-file
這個命令將打開指定的文件,並將所有鍵盤輸入的副本記錄到該文件。
14. Emacs 函數幫助命令匯總
鍵盤輸入
函數
描述
apropos
對於一個給定的正則表達式,這個命令將給出 apropos 命令和變量的列表。
C-h a regexp
command-apropos
對於給定的正則表達式 ,這個命令將給出 apropos 命令的列表。
C-h b
describe-bindings
這個命令將在一個新的幫助緩沖區窗口中描述當前主要模式的所有有效的鍵綁定。
C-h ffunction
describe-function
這個命令將在一個新的幫助緩沖區窗口中描述給定函數 的用途。
C-h vvariable
describe-variable
這個命令將在一個新的幫助緩沖區窗口中描述給定變量 的用途。
C-h wfunction
where-is
這個命令將描述某個特定函數所綁定到的鍵盤輸入(如果有的話)。