表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
File→Open
find-file
查找文件並在一個新緩沖區裡打開它
C-x C-v
find-alternate-file
讀入另外一個文件替換掉用“C-x C-f”讀入的文件
C-xi
File→Insert File
insert-file
把文件插入到光標的當前位置
C-x C-s
File→Save (current buffer)
save-buffer
保存文件
C-x C-w
File→Save Buffer As
write-file
把緩沖區內容寫入一個文件
C-x C-c
File→ExitEmacs
save-buffers-kill-emacs
退出Emacs
C-h
help-command
進入Emacs的在線幫助系統
C-h f
Help→Describe Function
describe-function
給出某個給定命令名的在線幫助信息
C-h k
Help→Describe Key
describe-key
給出某個給定擊鍵序列的在線幫助信息
C-ht
Help→Emacs Tutorial
help-with-tutorial
啟動Emacs教程
C-hi
Help→Browse Manuals
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
Edit→Paste Most Recent
yank
恢復被刪除的文本
C-w或SHIFT-DELETE
Edit→Cut
kill-region
刪除文本塊
(無)
kill-paragraph
刪除光標後面的段落
(無)
backward-kill-paragraph
刪除光標前面的段落
表2-3:文本塊操作命令速查表
鍵盤操作
命令名稱
動作
C-@或 C- Space
set-mark-command
標記文本塊的開始(或結束)位置
C-xC-x
exchange-point-and-mark
互換插入點和文本標記的位置
C-w或SHIFT-DELETE
Edit→Cut
kill-region
刪除文本塊
C-y或SHIFT-INSERT
Edit→Paste Most Recent
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
Edit→Select and Paste
yank-pop
在用過“C-y”命令以後粘貼更早刪除的文本
表2-4:段落重排命令速查表
鍵盤操作
命令名稱
動作
ESC q
fill-paragraph
重排段落
(無)
Edit→Fill
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
C-x C-w filename Enter
表2-8:命令的中止和撤銷
鍵盤操作
命令名稱
動作
C-g
keyboard-quit
放棄當前命令
C-x u
advertised-undo[a]
撤銷上一次編輯(可以重復使用)
C-_或C-/
Edit→Undo
undo
撤銷上一次編輯
(無)
revert-buffer
把緩沖區恢復到上次對文件進行存盤(或者自動存盤)時的狀態
[a]advertised-undo和undo之間並沒有真正的不同。它們的工作情況都是一樣的。
表3-1:遞增查找命令速查表
鍵盤操作
命令名稱
動作
C-s
Edit→Search Incremental→Forward String
isearch-forward
向前(朝文件尾方向)開始遞增查找操作;後面是查找字符串。另外,(向前)查找下一個出現查找字符串的地方
C-s
Edit→Search Incremental→Backward String
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
Edit→Search→String Forward
向前(朝文件尾方向)開始一次非遞增查找操作
C-s
向前查找下一個
C-r Entersearchstring Enter
Edit→Search→String Backwards
向前(朝文件頭方向)開始一次非遞增查找操作
C-r
向後查找下一個
表3-3:查詢-替換操作中的響應
鍵盤操作
操作
M-%
Edit→Replace→Replace String
開始查詢-替換操作
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
Edit→Search→Regexp Forward
re-search-forward
向前(朝文件尾方向)查找一個正則表達式
C-M-r Enter
Edit→Search→Regexp Backwards
re-search-backward
向後(朝文件頭方向)查找一個正則表達式
C-M-s Enter
Edit→Search Incremental→ForwardRegexp
isearch-forward-regexp
向前(朝文件尾方向)遞增查找一個正則表達式
C-M-r Enter
Edit→Search Incremental→BackwardRegexp
isearch-backward-regexp
向後(朝文件頭方向)遞增查找一個正則表達式
C-M-% Enter
Edit→Replace→ReplaceRegexp
query-replace-regexp
查詢-替換一個與正則表達式
(無)
replace-regexp
無條件地對一個正則表達式做全局性替換(謹慎使用)
表3-6:Ispell命令速查表
鍵盤操作
命令名稱
動作
M-$ Enter
Tools→Spell Checking→Spell-Check Word
ispell-word
檢查光標位置上的單詞或者光標後面的單詞
(無)
Tools→Spell Checking→Spell-Check Region
ispell-region
檢查文本塊裡的單詞
(無)
Tools→Spell Checking→Spell-Check Buffer
ispell-buffer
檢查緩沖區裡的單詞
(無)
Tools→Spell Checking→Spell-Check Message
ispell-message
檢查電子郵件正文裡的單詞
(無)
Tools→Spell Checking→Spell-Check Comments
ispell-comments-and-strings
檢查程序裡的注釋和字符串
C-u M-$
Tools→Spell Checking→Continue Spell-Checking
ispell-continue
讓Ispell重新開始繼續執行;這個命令只有在運行過Ispell並用“C-g”組合鍵暫停過它的執行時才有效
(無)
Tools→Spell Checking→Kill Process
ispell-kill-ispell
殺死(即結束)Ispell進程
M-Tab
Tools→Spell Checking→Complete Word
ispell-complete-word
在文本模式下,自動補足當前單詞
(無)
Tools→Spell Checking→Automatic Spell-Checking (Flyspell)
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
File→Split Window
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
File→Remove Splits
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
在其他緩沖區裡選擇一個編輯��沖區
(無)
Tools→Compare (Ediff) Window→This Window and Next Window
compare-windows
對兩個編輯緩沖區的內容進行比較,並顯示它們之間的第一個不同之處
表4-2:編輯緩沖區操作命令速查表
鍵盤操作
命令名稱
動作
C-x b
Buffers→Select Named Buffer
switch-to-buffer
移動到指定的編輯緩沖區
C-x
Buffers→Next Buffer
next-buffer
移動到編輯緩沖區清單裡的下一個編輯緩沖區
C-x
Buffers→Previous Buffer
previous-buffer
移動到編輯緩沖區清單裡的上一個編輯緩沖區
C-x C-b
Buffers→List All Buffers
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
打開當前行的書簽到另一個窗口;按o鍵將光標切換到該窗口;C-o讓光標停留在當前窗口。
d, C-d, or k
對書簽重新命名
r
對書簽重新命名
s
保存清單裡的全部書簽
m
給書簽加上待顯示標記
v
顯示加有待顯示標記的書簽。如果沒有加上待顯示標記的,就顯示光標所在處的書簽
t
切換書簽關聯文件的路徑的顯示/不顯示狀態
w
顯示書簽關聯文件的存放位置(即路徑名)
x
刪除加有待刪除標記的書簽
u
去掉書簽上的待操作標記
Del
去掉上一行書簽上的待操作標記
q
退出書簽清單
Space or n
移到下一行
p
移到上一行
l
加載一個書簽文件(除了默認的).
A
顯示所有注釋
a
顯示當前書簽注釋
e
編輯(或新建)為當前書簽注釋
表4-5:書簽清單編輯命令速查表
鍵盤操作
命令名稱
動作
C-x r m
Edit→Bookmarks→Set Bookmark
bookmark-set
在當前光標位置處設置一個書簽
C-x r b
Edit→Bookmarks→Jump to Bookmark
bookmark-jump
跳轉到書簽指示位置
(無)
Edit→Bookmarks→Rename Bookmark
bookmark-rename
重新命名一個書簽
(無)
Edit→Bookmarks→Delete Bookmark
bookmark-delete
刪除一個書簽
(無)
Edit→Bookmarks→Save Bookmarks
bookmark-save
把書簽全都保存到默認的書簽
C-x r l
Edit→Bookmarks→Edit Bookmark List
bookmark-menu-list
進入“*Bookmark List*”編輯緩沖區
(無)
Edit→Bookmarks→Insert Contents
bookmark-insert
插入與給定書簽關聯著的文件的完整內容
(無)
Edit→Bookmarks→Save Bookmarks As
bookmark-write
把書簽全都保存到一個指定的文件裡
(無)
Edit→Bookmarks→Load a Bookmark File
bookmark-load
從指定文件裡加載書簽
(無)
Edit→Bookmarks→Insert Location
bookmark-insert-location
插入路徑到給定的書簽在當前的光標位置
表4-6:窗格命令速查表
鍵盤操作
命令名稱
動作
C-x 5 o
Buffers→Frames
other-frame
移動到其他窗格
C-x 5 0
File→Delete Frame
delete-frame
刪除當前窗格
C-x 5 2
File→New Frame
make-frame
在當前編輯緩沖區上創建一個新窗格
C-x 5 f
find-file-other-frame
在一個新空格裡查找文件
C-x 5 r
find-file-read-only-other-frame
創建新窗格並查找文件,把編輯緩沖區設置為只讀的(用來查閱你不小心修改了的文件)
C-x 5 b
switch-to-buffer-other-frame
創建新窗格並在其中顯示另外一個編輯緩沖區
備注:本文大部分內容摘自學習GNU Emacs(第二版),文中紫色部分摘自Learning GNU Emacs, 3rd Edition,並由本人翻譯整理而得。