本文内容均来自《学习GNU Emacs》第二版 机械工业出版社 Debra Cameron,Bill Rosenblall,Eric Raymond著,杨涛,杨晓云,王建桥等译
全部Emacs命令都有一个完整的名字,即时最简单的也不例外。
修改.emacs文件后,不重启emacs使配置生效,可以用M-x eval-buffer命令。
键盘操作 命令名字 动作
**********************************************************
C-n next-line 移动到下一行
C-x C-f find-file 打开一个指定的文件
C-j 换行
一个编辑缓冲区每次只能处于一种主模式中,退出一种主模式的办法是进入另一个主模式
主模式
模式 功能
***********************************************************
基本模式(fundamental mode) 默认模式,无特殊行为
文本模式(text mode) 书写文字材料
缩进文本模式(indented text mode) 自动缩进文本
C模式(C mode) 书写C语言程序
C++模式(C++ mode) 书写C++语言程序
FORTRAN模式(FORTRAN mode)
EmacsLISP模式(EmacsLISP mode)
LISP模式(LISP mode)
副模式
模式 功能
***********************************************************
自动换行模式(auto-fill mode) 开启字换行(word wrap)功能
改写模式(overwrite mode) 打字时替换而不是插入字符
自动保存模式(auto-save mode)
行号模式(line-number mode) 在状态行上显示当前文本行的编号
与文件操作有关的命令
键盘操作 命令名称 动作
*************************************************************
C-x C-f find-file 查找文件并在一个新缓存区里打开它
C-x C-v find-alternate-file 读入另外一个文件替换掉用"C-x C-f"读入的文件
C-x i 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-h t help-with-tutorial 启动Emacs教程
C-h i info-goto-emacs-command-node 启动Info文档阅读器
光标移动命令速查表
键盘操作 命令名词 动作
*****************************************************************
C-f forward-char 光标前移一个字符(右)
C-b backward-char 光标后移一个字符
C-p previous-line 光标前移一行(上)
C-n next-line 光标后移一行
ESC f forward-word 光标前移一个单词
ESC b backward-word 光标后移一个单词
C-a beginning-of-line 光标移到行首
C-e end-of-line 光标移到行尾
ESC e forward-sentence 光标前移一个句子
ESC a backward-sentence 光标后移一个句子
ESC } forward-paragraph 光标前移一个段落
ESC { backward-paragraph 光标后移一个段落
C-v scroll-up 屏幕上卷一屏
ESC v scroll-down 屏幕下卷一屏
ESC < beginning-of-buffer 光标前移到文件头
ESC > end-of-buffer 光标后移到文件尾
(无) goto-line 光标移动到第n行
(无) goto-char 光标前进到文件的第n个字符
C-l recenter 重绘画面,将当前行居中在画面
ESC n digit-argument 重复执行n次后续命令
C-u n universal-argument 重复执行n次后续命令(省略n时重复4次)
文本删除命令速查表
键盘操作 命令名词 动作
******************************************************
C-d delete-char 删除光标位置上的字符
DEL delete-backward-char 删除光标前面的字符
ESC d kill-word 删除光标后面的单词
ESC DEL backward-kill-word 删除光标前面的单词
C-k kill-line 从光标位置删除到行尾
ESC k kill-sentence 删除光标后面的句子
C-x DEL backward-kill-sentence 删除光标前面的句子
C-y yank 恢复被删除的文本
C-w kill-region 删除文本快
(无) kill-paragraph 删除光标后面的段落
(无) backward-kill-paragraph 删除光标前面的段落
ESC C-k 删除从行首到光标之间的内容
文本快操作命令速查表
键盘操作 命令名词 动作
******************************************************
C-@ set-mark-command 标记文本快的开始位置
C-w kill-region
C-y yank
ESC w kill-ring-save 复制文本快
ESC h mark-paragraph 标记段落
C-x h mark-whole-buffer 标记整个缓冲区
ESC y yank-pop 在用过"C-y"命令以后粘贴更早删除的文本
C-x C-x exchange-point-and-mark 互换插入点和标记的位置
ESC x set-variale RETURN kill-ring-max RETURN 加大删除环的尺寸,默认保存30次删除操作
命令的中止和撤消
键盘操作 命令名词 动作
******************************************************
C-g keyboard-quit 放弃当前命令
C-x u advertised-undo 撤消上一次编辑
(无) revert-buffer 把缓冲区恢复到上次对文件进行存盘时的状态
启用文本模式和自动换行模式
(setq default-major-mode 'text-mode)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
递增查找命令速查表
键盘操作 命令名词 动作
******************************************************
C-s isearch-forward 向前开始递增查找操作
C-r isearch-backward 向后开始递增查找操作
RETURN (无) 退出查找操作
C-g keyboard-quit 取消递增查找操作
DEL (无) 删除查找字符串中的字符
C-s C-s (无) 重复刚才的查找操作
C-s C-w 把光标位置到下一个标点符号或空格符间的文本复制到查找字符串里去
C-s C-y 把光标位置到行尾之间内容复制到查找字符串中,它将原文中大写字母都转为小写
C-s ESC y 将删除环里内容复制到查找字符串,此后可用ESC p及ESC n切换删除环中条目
简单查找命令速查表
键盘操作 动作
*******************************************************
C-s RETURN searchstring RETURN 向前开始一次非递增查找操作
C-s 向前找下一个
C-r RETURN searchstring RETURN 向后开始一次非递增查找操作
C-r 向后查找下一个
单词查找
C-s RETURN C-w word-search-forward
C-r RETURN C-w word-search-backward
(无) replace-string RETURN 从光标开始替换所有
查询-替换操作中的响应
键盘操作 动作
***************************************************
ESC % 开始查询-替换操作
SPACE或y 替换并前进到下一个位置
DEL或n 不替换并前进到下一个
. 替换当前后退出查询-替换操作
, 替换并显示替换情况(再按y才移动到下一个位置)
! 对后面全部替换并不再询问
^ 返回上一次替换位置
RETURN或q 退出查询-替换操作
C-r 进入递归编辑状态
C-w 删除此次内容并进入递归编辑状态
ESC C-c 退出递归编辑状态
C-] 退出递归编辑状态和查询-替换操作
C-x ESC ESC 调用上次命令(ESC p和ESC n可以调用之前和后的命令)
正则表达式查找及替换命令速查表
键盘操作 命令名词 动作
*********************************************************
ESC C-s RETURN re-search-forward 向前查找一个正则表达式
ESC C-r RETURN re-search-backward 向后查找一个正在表达式
ESC C-s isearch-forward-regexp 向前递增查找一个递增正则表达式
ESC C-r isearch-backward-regexp 向后
(无) query-replace-regexp 查询-替换一个正则表达式
(无) replace-regexp 无条件对一个正则表达式做全局替换
窗口命令速查表
键盘操作 命令名词 动作
*******************************************************
C-x 2 split-window-vertically 把当前窗口分割为上下两个窗口
C-x 3 split-window-horitontally 分为左右两个窗口
C-x > scroll-right 窗口内容右卷
C-x < scroll-left 窗口内容左卷
C-x o 从一个窗口移动到另一个窗口
C-x 0 关闭本窗口
C-x 1 只保留本窗口,关闭其他窗口
(无) delete-windows-on 关闭某个特定编辑缓冲区上的全部窗口
C-x ^ 加高本窗口
C-x } 加宽本窗口
(无) shrink-window 在垂直方向收缩窗口
C-x { 在水平方向压窄本窗口一列
C-x - shrink-window-if-larger-than-buffer 在高度上收缩到编辑缓冲区那么小
C-x + balance-windows 在高度上将窗口的尺寸全都变成同样大小
ESC C-v 卷动下一个窗口的内容
C-x 4 f 在另一个窗口查找并打开一个文件,光标也移过去
C-x 4 b 在另一个窗口打开选择的编辑缓冲区,光标移过去
编辑缓冲期操作命令速查表
键盘操作 命令名词 动作
*******************************************************
C-x b switch-to-buffer 移动到指定的编辑缓冲区
C-x C-b list-buffer 显示编辑缓冲区清单
C-x k kill-buffer 删除指定的编辑缓冲区
(无) kill-some-buffers 以问答方式删除各个编辑缓冲区
(无) rename-buffer 把编辑缓冲区的名字改为指定的名字
C-x s save-some-buffers 以问答方式存盘各个修改过的缓冲区 y,n,!,.,q,C-r进入查看模式,C-c退出查看模式
C-x C-q 把编辑缓冲区设为只读
编辑缓冲区清单操作命令速查表
键盘操作 动作 执行情况
*********************************************************
n或SPACE 移动到清单下一个编辑缓冲区 立即执行
p或C-p 移动到上一个 立即执行
d或k 标记上删除标记 等待x执行
s 待存盘 等待x执行
u或DEL 去掉操作标记 立即执行
x 对加有操作标记缓冲区执行 立即执行
~ 给编辑缓冲区加上未修改标记 立即执行
1 把编辑缓冲区满屏显示 立即执行
2 把这个和下一个编辑缓冲区显示到两个水平窗口 立即执行
f 在原本显示编辑缓冲区清单的窗口显示此编辑缓存区 立即执行
o 在另一个窗口显示此编辑缓冲区 立即执行
m 待显示标记 等待v执行
v 显示m标记的缓冲区 立即执行
q 退出编辑缓冲区清单 立即执行
书签命令操作速查表
键盘操作 命令 动作
********************************************************
C-x r b bookmark-jump 移动到书签指示的位置
(无) bookmark-rename 重命名书签
(无) bookmark-delete 删除书签
(无) bookmark-save 把书签全保存到默认书签文件里
C-x r l bookmark-menu-list 书签清单
(无) bookmark-insert 插入与给定书签关联着的文件的完整内容
(无) bookmark-write 把书签全保存到一个指定的文件里
(无) bookmark-load 从指定文件里加载书签
书签清单编辑命令速查表
命令 动作
*********************************************************
d 加上待删除标记
r 对书签重命名
s 保存清单里的全部书签
f 显示光标位置上的书签
m 加上待显示标记
v 显示由m标记的书签
t 切换书签关联文件的路径显示/不显示状态
w 显示书签关联文件的存放位置
x 删除加有待删除标记的书签
u或DEL 去掉书签上的标记
q 退出书签清单
窗格命令速查表
键盘操作 命令名词 动作
*********************************************************
C-x 5 o other-frame 移动到其他窗格
C-x 5 0 delete-frame 删除当前窗格
C-x 5 2 mark-frame 在当前编辑缓冲区上创建一个新窗格
C-x 5 r find-file-read-only-other-frame 创建新窗格并查找文件,且只读
C-x 5 f find-file-other-frame 在一个新窗格里查找文件
C-x 5 b switch-to-buffer-other-frame 创建新窗格且在其中显示另外一个缓冲区
ESC ! 执行一条命令
shell模式命令速查表
键盘操作 命令名词 动作
************************************************************
(无) shell 进入shell模式
C-c C-c comint-interrupt-subjob 中断当前作业
C-d comint-delchar-or-maybe-eof 删除或送出EOF字符(在缓冲区末时)
C-c C-d comint-send-eof 送出EOF字符
C-c C-u comint-kill-input 删除当前行
ESC p comint-previous-input 检索此前的上一个命令
ESC n comint-next-input 检索此后的下一个命令
RETURN comint-send-input 送出输入在当前行上的命令
TAB comint-dynamic-complete 自动补足当前命令
C-c C-o comint-kill-output 删除最后一个命令的输出
C-c C-r comint-show-output 把输出内容的第一行移到窗口顶部
C-c C-e comint-show-maximum-output 把输出内容的最后一行移到窗口底部
C-c C-p comint-previous-prompt 移动到前一条命令
C-c C-n comint-next-prompt 移动到后一条命令
ESC | shell-command-on-region 对选中的文本执行shell命令处理选择文本
C-u ESC ! 将命令执行结果直接放到当前编辑缓冲区而非"*Shell Command Output*"
Dired命令速查表
键盘操作 命令名词 动作
**********************************************************
C-x d dired 启动Dired
C dired-do-copy 复制文件
d dired-flag-file-deletion 给文件加上待删除标记
D dired-do-delete 以问答方式立即删除某个文件
e dired-find-file 编辑文件
f dired-advertised-find-file 查找文件
g revert-buffer 从磁盘上重新读入目录即刷新目录
G dired-do-chgrp 改变文件的组权限
k dired-do-kill-lines 从画面删除光标所在行而不是删除文件
m dired-mark 给文件加上*标记
n dired-next-line 移动到下一行
o dired-find-file-other-window 打开文件到一个新窗口光标在新窗口
C-o dired-display-file 打开文件到一个新窗口光标不移动过去
P dired-do-print 打印文件
q dired-quit 退出Dired
Q dired-do-query-replace 在加有待操作标记的文件里对字符串进行查找替换
R dired-do-rename 重新命名文件
u dired-unmark 去掉待操作标记
v dired-view-file 查看文件内容
x dired-do-flagged-delete 删除加有待删除标记D的文件
Z dired-do-compress 压缩或解压
ESC DEL dired-unmark-all-files 去得所有标记
~ dired-flag-backup-files 给备份文件加上待删除标记,用C-u ~去掉这些标记
* dired-mark-executables 给可执行文件加上*标记,用C-u *去得这些标记
# dired-flag-auto-save-files 给自动保存文件加上待删除标记,C-u #去掉
. dired-clean-directory 给带编号的备份文件加上待删除标记
/ dired-mark-directories 给目录加上*标记,C-u /去掉这些标记
= dired-diff 把这个文件与另一个文件进行比较
ESC = dired-backup-diff 把这个文件与它的备份文件进行比较
! dired-do-shell-command 以问答方式执行shell命令,对象为加有待操作文件
ESC } dired-next-marked-file 移动到加有*或D标记的下一个文件
ESC { dired-prev-marked-file 移动到加有*或D标记的上一个文件
%d dired-flag-files-regexp 给匹配这个正则表达式的文件加上待删除标记
%m dired-mark-files-regexp 给匹配这个正则表达式的文件加上待操作标记
+ dired-create-directory 创建一个目录
> dired-next-dirline 移动到下一个目录
< dired-prev-dirline 移动到上一个目录
s dired-sort-toggle-or-edit 按日期或文件名重新排序
C-u C-x C-d 给出一个详细的目录文件清单
C-x C-d 给出一个简单的目录文件清单
与宏有关的Emacs命令
键盘操作 命令名词 动作
************************************************************************
C-x ( start-kbd-macro 开始录制一个宏
C-x ) end-kbd-macro 结束宏的录制工作
C-x e call-last-kbd-macro 执行最后一次录制的宏
ESC n C-x e
C-u C-x ( universal-argument;start-kbd-macro 执行最后一次录制的宏后追加新动作
(无) name-last-kbd-macro 给刚录制的宏取一个名字
(无) insert-last-keyboard-macro 把起了名字的宏插入到一个文件里
(无) load-file 加载内容为宏命令定义的文件
(无) 宏名 执行保存起来的某个键盘命令
C-x q kbd-macro-query 在宏定义里插入一个查询
C-u C-x q (无) 在宏定义里插入一个递归编辑
ESC C-c exit-recursive-edit 退出递归编辑
基本缩进命令速查表
键盘操作 命令名称 动作
**********************************************************************
ESC C-\ indent-region 对光标和文本块标记之间的每一行进行缩进
ESC m back-to-indentation 把光标移到当前行的第一个非空白字符上
ESC ^ delete-indentation 把当前行合并到上一行去
ESC ; indent-for-comment 缩进后添加注释
C-x ; set-comment-column 按照制定comment-column值缩进注释
ESC j indent-new-comment-line 在下一行继续写完注释
(无) comment-region 将选中区域整个设置为注释
(无) kill-comment 去除当前行注释
C模式高级移动命令速查表
键盘操作 命令名称 动作
***********************************************************************
ESC a c-beginning-of-statement 移动到当前语句的开头
ESC e c-end-of-statement 移动到当前语句的末尾
ESC q c-fill-paragraph 如果光标在注释文本中间,则进行段落重排
ESC C-a begining-of-defun 移动到光标所在函数的开头
ESC C-e end-of-defun 移动到光标所在函数的末尾
ESC C-h c-mark-function 把光标放到函数开头,标记整个函数
C-c C-q c-indent-defun 按缩进样式对整个函数进行缩进
C-c C-u c-up-conditional 移动到当前预处理器条件的开始位置
C-c C-p c-backward-conditional 移动到上一个预处理器条件
C-c C-n c-forward-conditional 移动到下一个预处理器条件
C-c C-a c-toggle-auto-state 启用/禁用auto-newline模式
C-c : 输入::域作用域操作符
(无) c-toggle-hungry-state 启用/禁用hungry-delete-key模式
(无) c-forward-into-nomenclature 将"ThisVariableName"看错3个单词,向前
(无) c-backward-into-nomenclature 同时,向后一个单词