Emacs 是可扩展、可定制、自文档化的实时显示文本编辑器。 此参考文档针对 Emacs 27 制作。
要进入 Emacs,只需键入其名称:
$ emacs
- | - |
---|---|
C-z |
挂起 Emacs |
C-x C-c |
永久退出 Emacs |
- | - |
---|---|
C-<key> |
表示按住 Control 键,然后按 <key> |
M-<key> |
表示按一次 Esc 键,然后按 <key> |
注意:本速查表遵循以上规则。
后退 | 前进 | 移动单位 |
---|---|---|
C-b |
C-f |
字符 |
M-b |
M-f |
单词 |
C-p |
C-n |
行 |
C-a |
C-e |
行首 (或行尾) |
M-a |
M-e |
句子 |
M-{ |
M-} |
段落 |
C-x [ |
C-x ] |
页面 |
C-M-b |
C-M-f |
S-表达式 (Sexp) |
C-M-a |
C-M-e |
函数 |
M-< |
M-> |
缓冲区开始 (或结束) |
- | - |
---|---|
M-u |
单词转大写 |
M-l |
单词转小写 |
M-c |
单词首字母大写 |
C-x C-u |
区域转大写 |
C-x C-l |
区域转小写 |
- | - |
---|---|
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 u C-_ C-/ |
撤销不需要的更改 |
M-x revert-buffer |
将缓冲区恢复到其原始内容 |
C-l |
重绘混乱的屏幕 |
- | - |
---|---|
C-@ C-SPC |
在此处设置标记 |
C-x C-x |
交换点和标记 |
M-@ |
在 arg 个词后设置标记 |
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-表达式 |
- | - |
---|---|
C-W |
剪切区域 C-w |
M-w |
将区域复制到剪切环 |
M-z char |
剪切到下一个 char 出现的位置 |
C-y |
粘贴上次剪切的内容 |
M-y |
用上上次剪切的内容替换上次粘贴的内容 |
- | - |
---|---|
C-x 1 |
移除帮助窗口 |
C-M-v |
滚动帮助窗口 |
C-h a |
Apropos:显示匹配字符串的命令 |
C-h k |
描述按键运行的函数 |
C-h f |
描述一个函数 |
C-h m |
获取模式特定信息 |
帮助系统很简单。键入 C-h
(或 F1
) 并按照指示操作。如果您是初次使用的用户,请键入 C-h
t
以获取教程。
当显示两个命令时,第二个命令是针对框架而非窗口的类似命令。
- | - | - |
---|---|---|
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 . |
在其他窗口中查找标签 |
C-x ^ |
增高窗口 | |
C-x { |
缩窄窗口 | |
C-x } |
加宽窗口 |
- | - |
---|---|
TAB |
缩进当前行 (模式相关) |
C-M-\ |
缩进区域 (模式相关) |
C-M-q |
缩进 S-表达式 (模式相关) |
C-x TAB |
将区域严格缩进 arg 列 |
M-; |
为注释缩进 |
C-o |
在光标后插入新行 |
C-M-o |
将行的其余部分垂直向下移动 |
C-x C-o |
删除光标周围的空行 |
M-^ |
将行与上一行合并 (带参数则与下一行合并) |
M-\ |
删除光标周围的所有空白 |
M-SPC |
在光标处精确放置一个空格 |
M-q |
填充段落 |
C-x f |
将填充列设置为 arg |
C-x . |
设置每行开头的固定前缀 |
M-o |
设置字体 |
以下按键在微缓冲区中定义。
- | - |
---|---|
TAB |
尽可能多地补全 |
SPC |
补全一个词 |
RET |
补全并执行 |
? |
显示可能的补全 |
M-p |
获取上一个微缓冲区输入 |
M-n |
获取下一个微缓冲区输入或默认值 |
M-r |
在历史记录中向后搜索正则表达式 |
M-s |
在历史记录中向前搜索正则表达式 |
C-g |
中止命令 |
键入 C-x
ESC
ESC
来编辑并重复上一个使用微缓冲区的命令。在文本终端上键入 F10
来激活菜单栏项目。
- | - |
---|---|
M-. |
查找标签 (定义) |
C-u M-. |
查找下一个出现的标签 |
M-x visit-tags-table |
指定一个新的标签文件 |
M-x tags-search |
在标签表中的所有文件上搜索正则表达式 |
M-x tags-query-replace |
在所有文件上运行查询替换 |
M-, |
继续上一次的标签搜索或查询替换 |
- | - |
---|---|
C-x r r |
将矩形复制到寄存器 |
C-x r k |
剪切矩形 |
C-x r y |
粘贴矩形 |
C-x r o |
打开矩形,将文本向右移动 |
C-x r c |
清空矩形 |
C-x r t |
为每行添加字符串前缀 |
- | - |
---|---|
C-x ( |
开始定义键盘宏 |
C-x ) |
结束键盘宏定义 |
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 |
\| |
或者 (“or”) |
\(...\) |
分组 |
\(:?...\) |
非捕获分组 |
\(:NUM...\) |
显式编号分组 |
\n |
与第 n 个组相同的文本 |
\b |
在单词边界 |
\B |
不在单词边界 |
开始 | 结束 | 实体 |
---|---|---|
^ |
$ |
行 |
\< |
\> |
单词 |
\_< |
\_> |
符号 |
\‘ |
\’ |
缓冲区 |
这些 | 其他 | 类别 |
---|---|---|
[...] |
[^...] |
显式集合 |
\w |
\W |
单词语法字符 |
\sc |
\Sc |
具有语法 c 的字符 |
\cc |
\Cc |
具有类别 c 的字符 |
- | - |
---|---|
C-s |
向前搜索 |
C-r |
向后搜索 |
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- |
在区域上运行一个 shell 命令 |
C-u M- |
通过 shell 命令过滤区域 |
M-x shell |
在窗口 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 |
数字参数 |
M-- |
负数参数 |
C-q char |
引用插入 |
- | - |
---|---|
C-x C-e |
求值光标前的 S-表达式 |
C-M-x |
求值当前 defun |
M-x eval-region |
求值区域 |
M-: |
读取并求值微缓冲区 |
M-x load-library |
从 load-path 加载 Lisp 库 |
- | - |
---|---|
M-x customize |
定制变量和外观 |
在 Emacs Lisp 中进行全局按键绑定:
(global-set-key (kbd "C-c g") ’search-forward)
(global-set-key (kbd "M-#") ’query-replace-regexp)
- | - |
---|---|
C-x a g |
添加全局缩写 |
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
以获取更多详细信息。