GNU Emacs命令速查表
GNU Emacs命令速查表
第一章 Emacs的基本概念
表1-1:Emacs編輯器的主模式
模式 |
功能 |
基本模式(fundamental mode) |
預設模式,無特殊行為 |
文字模式(text mode) |
書寫文字材料(第二章) |
郵件模式(mail mode) |
書寫電子郵件訊息(第六章) |
RMAIL模式(RMAIL mode) |
閱讀和組織電子郵件(第六章) |
只讀模式(view mode) |
檢視檔案,但不進行編輯(第五章) |
shell模式(shell mode) |
在Emacs裡執行一個UNIX shell(第五章) |
FTP模式(ange-ftp mode) |
下載或者檢視遠端系統上的檔案(第七章) |
Telent模式(telnet mode) |
登入到遠端系統(第七章) |
大綱模式(outline mode) |
書寫大綱(第八章) |
縮排文字模式(indented text mode) |
自動縮排文字(第八章) |
圖形模式(picture mode) |
繪製簡單的線條圖形(第八章) |
mroff模式(mroff mode) |
按mroff的要求對檔案進行排版(第九章) |
TEX模式(TEX mode) |
按TEX的要求對檔案進行排版(第九章) |
C模式(C mode) |
書寫C語言程式(第十二章) |
C++模式(C++ mode) |
書寫C++程式(第十二章) |
FORTRAN模式(FORTRAN mode) |
書寫FORTRAN程式(第十二章) |
Emacs LISP模式(Emacs LISP mode) |
書寫Emacs LISP函式(第十二章) |
LISP模式(LISP mode) |
書寫LISP程式(第十二章) |
LISP互動模式(LISP interaction mode) |
書寫和求值LISP表示式(第十二章) |
表1-2:Emacs編輯器的副模式
模式 |
功能 |
自動換行模式(auto-fill mode) |
開啟字換行(word wrap)功能(第二章) |
改寫模式(overwrite mode) |
打字時替換而不是插入字元(第二章) |
自動儲存模式(auto-save mode) |
把檔案按一定週期自動儲存到一個特殊的臨時檔案裡(第二章) |
行號模式(line number mode) |
在狀態列上顯示當前檔案行的編號(第二章) |
臨時標記模式(transient mark mode) |
對被選取的文字區做高亮反顯(第二章) |
縮略語詞模式(abbrev mode) |
允許使用單詞的簡寫形式(第三章) |
大綱模式(outline mode) |
書寫大綱(第八章) |
VC模式(VC mode) |
在Emacs下使用各種版本控制系統(第十五章) |
表1-3:與檔案操作有頭的命令
鍵盤操作 |
命令名稱 |
動作 |
C-x C-f |
find-file |
查詢檔案並在一個新緩衝區裡開啟它 |
C-x C-v |
find-alternate-file |
讀入另外一個檔案替換掉用“C-x C-f”讀入的檔案 |
C-xi |
insert-file |
把檔案插入到游標的當前位置 |
C-x C-s |
save-buffer |
儲存檔案 |
C-x C-w |
write-file |
把緩衝區內容寫入一個檔案 |
C-x C-c |
save-buffers-kill-emacs |
退出Emacs |
C-h |
help-command |
進入Emacs的線上幫助系統 |
C-h f |
describe-function |
給出某個給定命令名的線上幫助資訊 |
C-h k |
describe-key |
給出某個給定擊鍵序列的線上幫助資訊 |
C-ht |
help-with-tutorial |
啟動Emacs教程 |
C-hi |
info-goto-emacs-command-node |
啟動Info文件閱讀器 |
第二章 檔案編輯
ESC x auto-fill-mode RETURN 切換自動換行模式
ESC x this-outrageously-long-string RETURN 開啟Emacs自動完成功能,即輸入幾個字元後按下TAB鍵,Emacs通常會自動填上單詞的其餘部分或者命令的其餘部分
表 2-1:游標移動命令速查表
鍵盤操作 |
命令名稱 |
動作 |
C-f |
forward-char |
游標前移一個字元(右) |
C-b |
backward-char |
游標後移一個字元(左) |
C-p |
previous-line |
游標前移一行(上) |
C-n |
next-line |
游標後移一行(下) |
M-f |
forward-word |
游標前移一個單詞 |
M-b |
backward-word |
游標後移一個單詞 |
C-a |
beginning-of-line |
游標移到行首 |
C-e |
end-of-line |
游標移到行尾 |
M-e |
forward-sentence |
游標前移一個句子 |
M-a |
backward-sentence |
游標後移一個句子 |
M-} |
forward-paragraph |
游標前移一個段落 |
M-{ |
backward-paragraph |
游標後移一個段落 |
C-v |
scroll-up |
螢幕上卷一屏 |
M-v |
scroll-down |
螢幕下卷一屏 |
C-x ] |
forward-page |
游標前移一頁 |
C-x [ |
backward-page |
游標後移一頁 |
M-< |
beginning-of-buffer |
游標前移到檔案頭 |
M-> |
end-of-buffer |
游標前移到檔案尾 |
(無) |
goto-line |
游標前進到檔案的第n行 |
(無) |
goto-char |
游標前進到檔案的第n個字元 |
C-l |
recenter |
重新繪製屏顯畫面,當前行放在畫面中心處 |
M-n |
digit-argument |
重複執行n次後續命令 |
C-u n |
universal-argument |
重複執行n次後續命令(省略n時重複4次) |
說明:
1. 以“CTRL”開頭的命令的游標移動距離通常都要比對應的以“ESC”開頭的命令移動距離短。
2. 表中第一欄的“(無)”表示如果想執行這個命令,就必須按下“ESC x”(或者“M-x”),再輸入命令的全名,最後按下回車鍵。它們沒有對應的預設組合鍵。
表 2-2:文字刪除命令速查表
鍵盤操作 |
命令名稱 |
動作 |
C-d |
delete-char |
刪除游標位置上的字元 |
Del |
delete-backward-char |
刪除游標前面的字元 |
M-d |
kill-word |
刪除游標後面的單詞 |
M-Del |
backward-kill-word |
刪除游標前面的單詞 |
C-k |
kill-line |
從游標位置刪除到行尾 |
M-k |
kill-sentence |
刪除游標後面的句子 |
C-x Del |
backward-kill-sentence |
刪除游標前面的句子 |
C-y或SHIFT-INSERT |
yank |
恢復被刪除的文字 |
C-w或SHIFT-DELETE |
kill-region |
刪除文字塊 |
(無) |
kill-paragraph |
刪除游標後面的段落 |
(無) |
backward-kill-paragraph |
刪除游標前面的段落 |
表2-3:文字塊操作命令速查表
鍵盤操作 |
命令名稱 |
動作 |
[email protected]或 C- Space |
set-mark-command |
標記文字塊的開始(或結束)位置 |
C-xC-x |
exchange-point-and-mark |
互換插入點和文字標記的位置 |
C-w或SHIFT-DELETE |
kill-region |
刪除文字塊 |
C-y或SHIFT-INSERT |
yank |
貼上最近刪除或複製的文字 |
M-w |
kill-ring-save |
複製文字塊(以便用“C-y”命令來貼上它) |
M-h |
mark-paragraph |
標記段落 |
C-x C-p |
mark-page |
標記頁面 |
C-x h |
mark-whole-buffer |
標記整個緩衝區 |
M-y |
yank-pop |
在用過“C-y”命令以後貼上更早刪除的文字 |
表2-4:段落重排命令速查表
鍵盤操作 |
命令名稱 |
動作 |
ESC q |
fill-paragraph |
重排段落 |
(無) |
fill-region |
對某個檔案塊中的段落進行重排 |
表2-5:位置交換命令速查表
鍵盤操作 |
命令名稱 |
動作 |
C-t |
transpose-chars |
交換兩個字元的位置 |
M-t |
transpose-words |
交換兩個單詞的位置 |
C-x C-t |
transpose-lines |
交換兩個文字行的位置 |
(無) |
transpose-sentences |
交換兩個單詞的位置 |
(無) |
transpose-paragraphs |
交換兩個段落的位置 |
表2-6:字母大小寫編輯命令速查表
鍵盤操作 |
命令名稱 |
動作 |
M-c |
capitalize-word |
把單詞的首字母改為大寫 |
M-u |
upcase-word |
把單詞的字母全部改為大寫 |
M-l |
downcase-word |
把單詞的字母全部改為小寫 |
Meta - M-c |
negative-argument; capitalize-word |
把前一個單詞的首字母改為大家 |
Meta - M-u |
negative-argument;upcase-word |
把前一個單詞的字母全部改為大寫 |
Meta - M-l |
negative-argument;downcase-word |
把前一個單詞的字母全部改為小寫 |
表2-7:撤銷編輯修改的3種方法
如果你: |
請使用以下命令 |
不喜歡剛做的修改,想一個一個地撤銷它們 |
C-_ or C-x u (undo) |
想撤銷自上次對檔案存檔之後的所有修改 |
M-x revert-buffer Enter |
想回到該檔案以前的版本(即這個檔案在開始這次編輯工作之前的樣子) |
C-x C-f filename~ Enter |
表2-8:命令的中止和撤銷
鍵盤操作 |
命令名稱 |
動作 |
C-g |
keyboard-quit |
放棄當前命令 |
C-x u |
advertised-undo[a] |
撤銷上一次編輯(可以重複使用) |
C-_或C-/ |
undo |
撤銷上一次編輯 |
(無) |
revert-buffer |
把緩衝區恢復到上次對檔案進行存檔(或者自動存檔)時的狀態 |
[a]advertised-undo和undo之間並沒有真正的不同。它們的工作情況都是一樣的。
第三章 查詢和替換操作
表3-1:遞增查詢命令速查表
鍵盤操作 |
命令名稱 |
動作 |
C-s |
isearch-forward |
向前(朝檔案尾方向)開始遞增查詢操作;後面是查詢字串。另外,(向前)查詢下一個出現查詢字串的地方 |
C-s |
isearch-backward |
向後(朝檔案頭方向)開始遞增查詢操作;後面是查詢字串。另外,(向後)查詢下一個出現查詢字串的地方 |
Enter |
isearch-exit |
退出查詢操作 |
C-g |
keyboard-quit |
取消遞增查詢操作(你可能需要連按它兩次) |
Del |
isearch-delete-char |
刪除查詢字串中的字元 |
C-s C-w |
isearch-yank-word |
開始遞增查詢操作;把游標位置處的單詞用做查詢字串 |
C-s C-y |
isearch-yank-line |
開始遞增查詢操作;把游標位置到行尾之間的文字用做查詢字串 |
C-s M-y |
isearch-yank-kill |
開始遞增查詢操作;把刪除環中的文字用做查詢字串 |
C-sC-s |
isearch-repeat-forward |
重複剛才的向前查詢操作 |
C-rC-r |
isearch-repeat-backward |
重複剛才的向後查詢操作 |
表3-2:簡單查詢命令速查表
鍵盤操作 |
操作 |
C-s Entersearchstring Enter |
向前(朝檔案尾方向)開始一次非遞增查詢操作 |
C-s |
向前查詢下一個 |
C-r Entersearchstring Enter |
向前(朝檔案頭方向)開始一次非遞增查詢操作 |
C-r |
向後查詢下一個 |
表3-3:查詢-替換操作中的響應
鍵盤操作 |
操作 |
M-% |
開始查詢-替換操作 |
Space或y |
用新字串替換查詢字串searchstring,然後前進到下一個位置 |
Del或n |
不替換;前進到一個位置 |
. |
在當前位置做替換後退出查詢-操作 |
, |
替換並顯示替換情況(再按空格鍵或“y”後才移動到下一個位置) |
! |
對後面的檔案內容全部進行替換,不再提問是否要進行替換 |
^ |
返回上一次進行了替換的位置 |
Enter或q |
退出查詢-替換操作 |
E |
編輯替換字串 |
C-r |
進入遞迴編輯狀態 |
C-w |
刪除此處內容並進入遞迴編輯狀態(好做其他修改) |
C-M-c |
退出遞迴編輯狀態,繼續完成查詢-替換操作 |
C-] |
退出遞迴編輯狀態和查詢-替換操作 |
表3-4:用來建立正則表示式的字元
字元 |
匹配情況 |
^ |
匹配行首 |
$ |
匹配行尾 |
. |
匹配任意單個字元(類似於檔名中的問號“?”) |
.* |
匹配任意(零或以上)個字元(這是一個真正的萬用字元,類似於檔名中的星號“*”) |
\< |
匹配單詞的開頭 |
\> |
匹配單詞的結尾 |
[ ] |
匹配方括號中的任何一個字元;比如“[a-z]”將匹配任意一個字母表字元 |
\s, \S |
匹配任何空白字元:空格、換行、TAB、回車、換頁、退格;\S匹配任何除空白字元外的所有字元 |
\d, \D |
匹配任何單個數字:0-9;\D匹配任何除數字外的所有字元 |
\w, \W |
匹配任何字(大小寫字母、數字和下劃線);\W匹配任何除上述外的所有字元 |
表3-5:正規表示式查詢命令速查表
鍵盤操作 |
命令名稱 |
動作 |
C-M-s Enter |
re-search-forward |
向前(朝檔案尾方向)查詢一個正則表示式 |
C-M-r Enter |
re-search-backward |
向後(朝檔案頭方向)查詢一個正則表示式 |
C-M-s Enter |
isearch-forward-regexp |
向前(朝檔案尾方向)遞增查詢一個正則表示式 |
C-M-r Enter |
isearch-backward-regexp |
向後(朝檔案頭方向)遞增查詢一個正則表示式 |
C-M-% Enter |
query-replace-regexp |
查詢-替換一個與正則表示式 |
(無) |
replace-regexp |
無條件地對一個正則表示式做全域性性替換(謹慎使用) |
表3-6:Ispell命令速查表
鍵盤操作 |
命令名稱 |
動作 |
M-$ Enter |
ispell-word |
檢查游標位置上的單詞或者游標後面的單詞 |
(無) |
ispell-region |
檢查文字塊裡的單詞 |
(無) |
ispell-buffer |
檢查緩衝區裡的單詞 |
(無) |
ispell-message |
檢查電子郵件正文裡的單詞 |
(無) |
ispell-comments-and-strings |
檢查程式裡的註釋和字串 |
C-u M-$ |
ispell-continue |
讓Ispell重新開始繼續執行;這個命令只有在執行過Ispell並用“C-g”組合鍵暫停過它的執行時才有效 |
(無) |
ispell-kill-ispell |
殺死(即結束)Ispell程序 |
M-Tab |
ispell-complete-word |
在文字模式下,自動補足當前單詞 |
(無) |
flyspell-mode |
進入Flyspell副模式,該模式下會突出顯示錯誤拼寫單詞。 |
(無) |
flyspell-buffer |
拼寫檢查當前緩衝區,突顯出所有拼錯的單詞。使用滑鼠中鍵來糾正。 |
表3-7:UNIX拼寫檢查命令速查表
鍵盤操作 |
命令名稱 |
動作 |
(無) |
spell-word |
檢查游標位置上的單詞或者游標後面的單詞 |
(無) |
spell-buffer |
檢查當前編輯緩衝區的拼寫 |
(無) |
spell-region |
檢查當前文字塊的拼寫 |
表3-8:單詞簡寫情況示例
簡寫詞 |
短語定義 |
輸入 |
擴充套件為 |
說明 |
lc |
lamb chop |
lc |
lamb chop |
“lc”是小寫,所以“lamp chop”是小寫 |
lc |
lamb chop |
Lc |
Lamb chop |
“Lc”裡面有一個大寫字母,所以“Lamb”的首字母大寫 |
lc |
lamb chop |
lC |
Lamb chop |
“Lc”裡面有一個大寫字母,所以“Lamb”的首字母大寫 |
lc |
lamb chop |
LC |
Lamb Chop |
“LC”全都是大寫,所以兩個單詞的首字母都大寫 |
lc |
Lamb Chop |
lc |
Lamb Chop |
短語定義裡的字母大小寫情況永遠不變 |
lc |
Lamb Chop |
LC |
Lamb Chop |
短語定義裡的字母大小寫情況永遠不變 |
表3-9:簡寫詞編輯命令速查表
鍵盤操作 |
命令名稱 |
動作 |
M-/ |
dabbrev-expand |
根據最相近的單詞將單詞補全,該單詞始於這個字串(如果沒有你要找的單詞,再次按M-/) |
(無) |
abbrev-mode |
進入(或退出)單詞簡寫模式 |
C-x a –或C-x ai g |
inverse-add-global-abbrev |
輸入全域性性簡寫詞之後,輸入其短語定義 |
C-x ai l |
inverse-add-mode-abbrev |
輸入區域性性簡寫詞之後,輸入其短語定義 |
(無) |
unexpand-abbrev |
撤銷最近一個簡寫詞定義條目 |
(無) |
write-abbrev-file |
儲存簡寫詞彙表文件 |
(無) |
edit-abbrevs |
編輯簡寫詞彙表 |
(無) |
list-abbrevs |
檢視簡寫詞彙表 |
(無) |
kill-all-abbrevs |
本次編輯工作禁用簡寫詞功能 |
第四章 緩衝區和視窗
表4-1:視窗命令速查表
鍵盤操作 |
命令名稱 |
動作 |
C-x 2 |
split-window-vertically |
把當前視窗分割為上、下排列的兩個視窗 |
C-x 3 |
split-window-horizontally |
把當前視窗分割為左、右排列的兩個視窗 |
C-x > |
scroll-right |
視窗內容右卷 |
C-x < |
scroll-left |
視窗內容左卷 |
C-x o |
other-window |
移動到其他視窗;如果有多個視窗,按順時針方向移動到下一個視窗 |
C-x 0 |
delete-window |
刪除當前視窗 |
C-x 1 |
delete-other-windows |
刪除所有視窗,只保留當前視窗 |
(無) |
delete-windows-on |
刪除某個給定編輯緩衝區上的所有視窗 |
C-x ^ |
enlarge-window |
加高當前視窗 |
(無) |
shrink-window |
壓低當前視窗 |
C-x } |
enlarge-window-horizontally |
加寬當前視窗 |
C-x { |
shrink-window-horizontally |
壓窄當前視窗 |
C-x - |
shrink-window-if-larger-than-buffer |
如果編輯緩衝區比視窗小,就壓縮視窗面積 |
C-x + |
balance-windows |
把所有視窗調整為同樣大小 |
C-M-v |
scroll-other-window |
對其他視窗做卷屏操作 |
C-x 4 f |
find-file-other-window |
在其他窗口裡查詢並開啟一個檔案 |
C-x 4 b |
switch-to-buffer-other-window |
在其他緩衝區裡選擇一個編輯緩衝區 |
(無) |
compare-windows |
對兩個編輯緩衝區的內容進行比較,並顯示它們之間的第一個不同之處 |
表4-2:編輯緩衝區操作命令速查表
鍵盤操作 |
命令名稱 |
動作 |
C-x b |
switch-to-buffer |
移動到指定的編輯緩衝區 |
C-x |
next-buffer |
移動到編輯緩衝區清單裡的下一個編輯緩衝區 |
C-x |
previous-buffer |
移動到編輯緩衝區清單裡的上一個編輯緩衝區 |
C-x C-b |
list-buffers |
顯示編輯緩衝區清單 |
C-x k |
kill-buffer |
刪除指定的編輯緩衝區 |
(無) |
kill-some-buffers |
以問答方式刪除各個編輯緩衝區 |
(無) |
rename-buffer |
把編輯緩衝區的名字改為指定的名字 |
C-x s |
save-some-buffers |
以問答方式存檔各個修改過的編輯緩衝區 |
表4-3:編輯緩衝區清單操作命令速查表
鍵盤操作 |
動作 |
執行情況 |
C-n, Space, n, or |
移動到清單裡的下一個編輯緩衝區(即編輯緩衝區清單裡的下一行) |
立即執行 |
C-p, p, or |
移動到清單裡的下一個編輯緩衝區(即編輯緩衝區清單裡的上一行) |
立即執行 |
d |
給編輯緩衝區加上待刪除標記 |
按下“x”鍵時執行 |
k |
給編輯緩衝區加上待刪除標記 |
按下“x”鍵時執行 |
s |
給編輯緩衝區加上待存檔標記 |
按下“x”鍵時執行 |
u |
去掉編輯緩衝區上的操作標記 |
立即執行 |
x |
對加有操作標記的所有編輯緩衝區執行相應的操作 |
立即執行 |
Del |
去掉上一個編輯緩衝區上的修改標記 |
立即執行 |
~ |
給編輯緩衝區加上未修改標記 |
立即執行 |
% |
轉換編輯緩衝區加上未修改標記 |
立即執行 |
1 |
把編輯緩衝區滿屏顯示 |
立即執行 |
2 |
把這個編輯緩衝區和下一個編輯緩衝區顯示到兩個水平窗口裡 |
立即執行 |
f |
在原本顯示編輯緩衝區清單的窗口裡顯示此編輯緩衝區的內容 |
立即執行 |
o |
把此編輯緩衝區顯示到另外一個窗口裡 |
立即執行 |
m |
給編輯緩衝區加上待顯示標誌。參見“v”命令的說明 |
按下“v”鍵時執行 |
v |
顯示用“m”命令加上待顯示標誌的編輯緩衝區。Emacs將動態地建立足夠的視窗來顯示加有這類標誌的編輯緩衝區 |
立即執行 |
q |
退出編輯緩衝區清單 |
立即執行 |
表4-4:書籤清單編輯命令速查表
命令 |
動作 |
Enter, f,或j |
在當前行轉到書籤 |
C-o或o |
開啟當前行的書 |