EMACS常用快捷鍵
Emacs 快捷鍵
快捷鍵組合:
c-x : Ctrl+x
m-x: Alt+x
emacs -nw file.r (關閉X11deplay)
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 , |
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 |
delete-backward-char |
刪除插入點前的字元。 |
C-d |
delete-char |
刪除插入點處的字元。 |
M-d |
kill-word |
從插入點開始向前刪除字元,直到單詞末尾。 |
M-Backspace, |
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 |
交換游標和標記的位置。 |
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 |
這個命令將描述某個特定函式所繫結到的鍵盤輸入(如果有的話)。 |