博客地址:http://blog.csdn.net/shuxiao9058
原始作者:季亚
表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:文本块操作命令速查表
键盘操作 |
命令名称 |
动作 |
C-@或 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 aig |
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 |
打开当前行的书签到另一个窗口;按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 |
bookmark-set |
在当前光标位置处设置一个书签 |
C-x r b |
bookmark-jump |
跳转到书签指示位置 |
(无) |
bookmark-rename |
重新命名一个书签 |
(无) |
bookmark-delete |
删除一个书签 |
(无) |
bookmark-save |
把书签全都保存到默认的书签 |
C-x r l |
bookmark-menu-list |
进入“*Bookmark List*”编辑缓冲区 |
(无) |
bookmark-insert |
插入与给定书签关联着的文件的完整内容 |
(无) |
bookmark-write |
把书签全都保存到一个指定的文件里 |
(无) |
bookmark-load |
从指定文件里加载书签 |
(无) |
bookmark-insert-location |
插入路径到给定的书签在当前的光标位置 |
表4-6:窗格命令速查表
键盘操作 |
命令名称 |
动作 |
C-x 5 o |
other-frame |
移动到其他窗格 |
C-x 5 0 |
delete-frame |
删除当前窗格 |
C-x 5 2 |
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,并由本人翻译整理而得。