要启动 Emacs,直接输入其命令名:
$ emacs
| - | - |
|---|---|
C-z |
Suspend Emacs |
C-x C-c |
Exit Emacs permanently |
| 快捷键 | 执行操作 |
|---|---|
C-z |
挂起/最小化 Emacs |
C-x C-c |
永久退出 Emacs |
| 快捷键前缀 | 详细组合按法说明 |
|---|---|
C-<key> |
表示按住 Ctrl 键,同时按下 <key> 按键 |
M-<key> |
表示按一下 Esc 键(或按住 Alt),然后按下 <key> 按键 |
注意:本备忘单严格遵循上述符号约定。
| 向后移动 | 向前移动 | 移动的目标元素 |
|---|---|---|
C-b |
C-f |
单个字符 (Character) |
M-b |
M-f |
单词 (Word) |
C-p |
C-n |
行 (Line) |
C-a |
C-e |
行首 (或行尾) |
M-a |
M-e |
句子 (Sentence) |
M-{ |
M-} |
段落 (Paragraph) |
C-x [ |
C-x ] |
页面 (Page) |
C-M-b |
C-M-f |
S 表达式 (Sexp) |
C-M-a |
C-M-e |
函数 (Function) |
M-< |
M-> |
缓冲区开头 (或末尾) |
| 快捷键 | 执行操作 |
|---|---|
M-u |
将当前单词转换为大写 |
M-l |
将当前单词转换为小写 |
M-c |
将当前单词首字母大写 |
C-x C-u |
将选区 (Region) 内容转换为大写 |
C-x C-l |
将选区 (Region) 内容转换为小写 |
| 快捷键 | 执行操作 |
|---|---|
C-x C-f |
打开/读取文件至 Emacs 缓冲区 |
C-x C-s |
将当前文件保存写入磁盘 |
C-x s |
保存所有打开的文件 |
C-x i |
将另一个文件的内容插入当前缓冲区 |
C-x C-v |
用新指定的文件替换当前文件 |
C-x C-w |
将当前缓冲区另存为指定文件 |
C-x C-q |
切换当前缓冲区的只读状态 |
| 快捷键 | 执行操作 |
|---|---|
C-g |
中断/取消当前正在输入或执行的命令 |
M-x recover-session |
恢复因系统崩溃而丢失的文件 |
C-x uC-_C-/ |
撤销上一次的修改操作 |
M-x revert-buffer |
将缓冲区重置恢复至磁盘上的原始内容 |
C-l |
重新绘制错乱的屏幕界面 |
| 快捷键 | 执行操作 |
|---|---|
C-t |
对调两个字符的位置 |
M-t |
对调两个单词的位置 |
C-x C-t |
对调两行的位置 |
C-M-t |
对调两个 S 表达式的位置 |
页面滚动 (Scroll)
| 快捷键 | 执行操作 |
|---|---|
C-v |
向下翻页(滚动至下一屏) |
M-v |
向上翻页(滚动至上一屏) |
C-x < |
向左水平滚动 |
C-x > |
向右水平滚动 |
C-l |
循环将当前行滚动置于 屏幕中央、顶部或底部 |
快速跳转 (Goto)
| 快捷键 | 执行操作 |
|---|---|
M-g g |
跳转至指定行号 |
M-g c |
跳转至指定字符位置 |
M-m |
返回至当前行的首个非空白字符 |
| 快捷键 | 执行操作 |
|---|---|
C-@C-SPC |
在当前光标处设置标记 (Mark) |
C-x C-x |
交换光标点 (Point) 与标记 (Mark) 的位置 |
M-@ |
将标记设置在相隔指定单词数的位置 |
M-h |
选中当前段落 |
C-x C-p |
选中当前页面 |
C-M-@ |
选中当前 S 表达式 |
C-M-h |
选中当前函数 |
C-x h |
全选整个缓冲区的内容 |
| 向后删除 | 向前删除 | 删除的目标元素 |
|---|---|---|
DEL |
C-d |
字符 (普通删除) |
M-DEL |
M-d |
单词 |
M-0 C-k |
C-k |
行 (至行尾) |
C-x DEL |
M-k |
句子 |
M-- C-M-k |
C-M-k |
S 表达式 |
剪贴板操作 (Killing)
| 快捷键 | 执行操作 |
|---|---|
C-w |
剪切选中区域至剪贴环 (Kill Ring) |
M-w |
复制选中区域至剪贴环 |
M-z char |
删除从当前位置直至指定字符出现处 |
C-y |
粘贴最后一次剪切/复制的内容 |
M-y |
循环替换为剪贴环中的上一条历史记录 |
| 快捷键 | 执行操作 |
|---|---|
C-x 1 |
关闭帮助窗口 |
C-M-v |
滚动帮助窗口内容 |
C-h a |
命令检索:显示与指定字符串匹配的所有命令 |
C-h k |
描述按键所绑定的对应函数 |
C-h f |
描述指定函数的详细文档 |
C-h m |
获取当前模式 (Mode) 的专属帮助信息 |
帮助系统非常直观。按 C-h(或 F1)并按照提示操作即可。如果是首次使用,请按 C-h t
查看交互式新手教程。
当显示两个命令时,第二个命令代表对框架 (Frame/独立窗口) 进行操作,而非对窗口 (Window) 操作。
| 框架操作 | 窗口操作 | 执行功能描述 |
|---|---|---|
C-x 5 1 |
C-x 1 |
关闭所有其他窗口,仅保留当前窗口 |
C-x 5 2 |
C-x 2 |
上下拆分当前窗口 |
C-x 5 0 |
C-x 0 |
关闭当前窗口 |
C-x 3 |
左右拆分当前窗口 | |
C-M-v |
滚动另一个窗口的内容 | |
C-x 5 o |
C-x o |
将光标焦点切换至另一个窗口 |
C-x 5 b |
C-x 4 b |
在另一个窗口中打开指定缓冲区 |
C-x 5 C-o |
C-x 4 C-o |
在另一个窗口中显示指定缓冲区 |
C-x 5 f |
C-x 4 f |
在另一个窗口中打开指定文件 |
C-x 5 r |
C-x 4 r |
在另一个窗口中以只读方式打开文件 |
C-x 5 d |
C-x 4 d |
在另一个窗口中运行 Dired 文件管理器 |
C-x 5 . |
C-x 4 . |
在另一个窗口中查找 Tag 标签定义 |
C-x ^ |
增加当前窗口的高度 | |
C-x { |
减少当前窗口的宽度 | |
C-x } |
增加当前窗口的宽度 |
| 快捷键 | 执行操作 |
|---|---|
TAB |
缩进当前行(取决于当前主模式) |
C-M-\ |
缩进选中区域 |
C-M-q |
缩进 S 表达式 |
C-x TAB |
刚性缩进选区指定列数 |
M-; |
缩进并插入注释 |
C-o |
在光标后插入新行 |
C-M-o |
将当前行剩余内容垂直下移 |
C-x C-o |
删除光标周围的空白空行 |
M-^ |
将当前行与上一行合并(带参数时与下一行合并) |
M-\ |
删除光标周围的所有空白字符 |
M-SPC |
在光标处仅保留正好一个空格 |
M-q |
填充/重排当前段落 |
C-x f |
设置段落填充列限制宽度 |
C-x . |
设置每行开头的固定前缀 |
M-o |
设置字体/字面样式 (Face) |
| 快捷键 | 执行操作 |
|---|---|
C-h i |
进入 Info 官方在线文档阅读器 |
C-h S |
在 Info 中查找指定的函数或变量说明 |
在节点内浏览 (Moving within a Node)
| 快捷键 | 执行操作 |
|---|---|
SPC |
向下翻页阅读 |
DEL |
向上翻页阅读 |
b |
跳转至当前节点的开头 |
在不同节点间跳转 (Moving between Nodes)
| 快捷键 | 执行操作 |
|---|---|
n |
跳转至下一个节点 (Next) |
p |
跳转至上一个节点 (Previous) |
u |
返回上一级父节点 (Up) |
m |
按名称选择菜单项目 |
n |
按数字 (1-9) 选择第 n 个菜单项目 |
f |
追踪交叉引用链接 (按 l 键可返回) |
l |
返回最后阅读过的上一个节点 |
d |
返回目录节点 (Directory) |
t |
跳转至 Info 文件的顶层根节点 |
g |
按名称跳转至任意指定节点 |
其他操作 (Other)
| 快捷键 | 执行操作 |
|---|---|
h |
运行 Info 交互式入门教程 |
i |
在索引集中查找主题 |
s |
使用正则表达式搜索节点内容 |
q |
退出 Info 阅读器 |
在 Minibuffer 输入框中定义了以下快捷键。
| 快捷键 | 执行操作 |
|---|---|
TAB |
尽可能补全更多文本 |
SPC |
补全至多一个单词 |
RET |
确认补全并执行命令 |
? |
显示所有可能的补全候选列表 |
M-p |
获取上一条输入的历史记录 |
M-n |
获取下一条输入的历史记录或默认值 |
M-r |
在历史记录中向上进行正则搜索 |
M-s |
在历史记录中向下进行正则搜索 |
C-g |
中断/取消当前命令 |
按 C-x ESC ESC 可以编辑并重复执行上一次使用 Minibuffer 的命令。在文本终端下,按 F10
可激活菜单栏项目。
| 快捷键 | 执行操作 |
|---|---|
M-. |
查找 Tag 标签(定义跳转) |
C-u M-. |
查找该标签的下一个出现位置 |
M-x visit-tags-table |
指定并载入新的 Tags 标签文件 |
M-x tags-search |
在 Tags 表包含的所有文件中进行正则搜索 |
M-x tags-query-replace |
在所有相关文件中执行交互式查询替换 |
M-, |
继续上一次的 Tags 搜索或查询替换 |
| 快捷键 | 执行操作 |
|---|---|
C-x r k |
剪切矩形块区域 (Kill) |
C-x r y |
粘贴矩形块区域 (Yank) |
C-x r o |
插入矩形块空白,将原有文本向右推送 |
C-x r c |
清空矩形块区域为空白字符 |
C-x r t |
在矩形块的每一行前添加指定字符串前缀 |
C-x r r |
将矩形块区域保存至寄存器 |
| 快捷键 | 执行操作 |
|---|---|
C-x ( |
开始录制键盘宏 (Start macro) |
C-x ) |
结束键盘宏录制 (End macro) |
C-x e |
执行最后一次录制的键盘宏 |
C-u C-x ( |
追加内容至上一个键盘宏 |
M-x name-last-kbd-macro |
为最后录制的键盘宏命名 |
M-x insert-kbd-macro |
将键盘宏的 Lisp 定义代码插入缓冲区 |
| 快捷键 | 执行操作 |
|---|---|
C-x b |
切换/选择另一个缓冲区 |
C-x C-b |
列出所有打开的缓冲区 |
C-x k |
关闭/销毁一个缓冲区 |
| 正则字符 | 详细功能说明 |
|---|---|
. (点) |
匹配除换行符外的任意单个字符 |
* |
匹配前面的字符零次或多次 |
+ |
匹配前面的字符一次或多次 |
? |
匹配前面的字符零次或一次 |
\ |
转义特殊字符 |
\c |
转义正则表达式中的特殊字符 c |
\| |
逻辑“或”关系分支 (Alternative) |
\(...\) |
分组捕获 (Grouping) |
\(:?...\) |
非捕获分组 (Shy grouping) |
\(:NUM...\) |
显式编号分组 |
\n |
反向引用第 n 个分组匹配的相同文本 |
\b |
匹配单词边界 |
\B |
匹配非单词边界 |
| 开头锚点 | 结尾锚点 | 匹配的目标实体 |
|---|---|---|
^ |
$ |
行 (Line) |
\< |
\> |
单词 (Word) |
\_< |
\_> |
符号 (Symbol) |
\‘ |
\’ |
缓冲区 (Buffer) |
| 包含类 | 排除类 | 匹配字符集 |
|---|---|---|
[...] |
[^...] |
显式字符集合 |
\w |
\W |
单词语法字符 (Word Syntax) |
\sc |
\Sc |
具有语法 c 的字符 |
\cc |
\Cc |
具有分类 c 的字符 |
| 快捷键 | 执行操作 |
|---|---|
C-s |
向前增量搜索 (Search Forward) |
C-r |
向后增量搜索 (Search Backward) |
C-M-s |
正则表达式增量搜索 |
C-M-r |
反向正则表达式增量搜索 |
M-p |
选择上一条搜索过的字符串 |
M-n |
选择下一条搜索过的字符串 |
RET |
退出渐进式搜索 |
DEL |
撤销上一个字符的匹配效果 |
C-g |
中断/取消当前搜索 |
重复按 C-s 或 C-r 可在任一方向上继续查找下一个匹配项。如果 Emacs 仍处于搜索状态中,按 C-g 仅取消
未匹配的部分。
| 快捷键 | 执行操作 |
|---|---|
M-% |
交互式查询替换文本字符串 |
M-x regexp |
使用正则表达式进行查询替换 |
SPC / y |
替换当前匹配项并跳转至下一个 |
, |
替换当前匹配项,保持光标不动 |
DEL / n |
跳过当前匹配项,不进行替换 |
! |
替换剩余的所有匹配项 |
^ |
回退至上一个匹配项位置 |
RET |
退出查询替换 |
C-r |
进入递归编辑模式 (按 C-M-c 退出) |
| 快捷键 | 执行操作 |
|---|---|
M-! |
执行一条同步 Shell 命令 |
M-& |
异步执行一条 Shell 命令 |
M-| |
对选中区域 (Region) 运行 Shell 命令 |
C-u M-| |
将选中区域作为输入通过 Shell 命令过滤 |
M-x shell |
在窗口中启动终端 Shell |
| 快捷键 | 执行操作 |
|---|---|
C-x RET l |
指定主要语言环境 |
M-x list-input-methods |
显示所有可用的输入法列表 |
C-\ |
开启或禁用输入法 |
C-x RET c |
为下一条命令设置编码系统 |
M-x list-coding-systems |
显示所有编码系统列表 |
M-x prefer-coding-system |
选择首选的编码系统 |
| 快捷键 | 执行操作 |
|---|---|
C-x r s |
将选区内容保存至寄存器 |
C-x r i |
将寄存器中的内容插入缓冲区 |
C-x r SPC |
将当前光标位置保存至寄存器 |
C-x r j |
跳转至寄存器中保存的光标位置 |
| 快捷键 | 执行操作 |
|---|---|
C-u num |
数值前缀参数 (Numeric Argument) |
M-- |
负数前缀参数 (Negative Argument) |
C-q char |
原样引用插入字符 |
| 快捷键 | 执行操作 |
|---|---|
C-x C-e |
对光标前的 S 表达式求值 (Eval) |
C-M-x |
对当前 defun 函数求值 |
M-x eval-region |
对选中区域的代码求值 |
M-: |
从 Minibuffer 读取并求值 Lisp 表达式 |
M-x load-library |
从 load-path 中加载 Lisp 扩展库 |
| 快捷键 | 执行操作 |
|---|---|
M-x customize |
图形化自定义变量与字体 Face |
在 Emacs Lisp 中配置全局快捷键绑定示例:
(global-set-key (kbd "C-c g") ’search-forward)
(global-set-key (kbd "M-#") ’query-replace-regexp)
| 快捷键 | 执行操作 |
|---|---|
C-x a g |
添加全局缩写 (Global Abbrev) |
C-x a l |
添加当前模式局部的缩写 |
C-x a i g |
为当前单词添加全局展开定义 |
C-x a i l |
为当前单词添加模式局部展开定义 |
C-x a e |
显式展开当前缩写 |
M-/ |
动态补全/展开前一个单词 |
| 快捷键 | 执行操作 |
|---|---|
M-$ |
检查当前单词的拼写 |
M-x ispell-region |
检查选中区域内所有单词的拼写 |
M-x ispell-buffer |
检查整个缓冲区的拼写 |
M-x flyspell-mode |
开启/关闭即时实时拼写检查 |
语法格式
(defun command-name (args)
"documentation" (interactive "template")
body)
函数定义示例
(defun this-line-to-top-of-window (line)
"Reposition current line to top of window.
With prefix argument LINE, put point on LINE."
(interactive "P")
(recenter (if (null line)
0
(prefix-numeric-value line))))
interactive 规范说明了如何交互式读取参数。输入 C-h f interactive RET 可了解更多细节。