Emacs 是可扩展的、可定制的、自记录的实时显示文本编辑器。此参考适用于 Emacs 27+
要进入 Emacs,只需输入其名称:
$ emacs
:- | :- |
---|---|
C-z | 挂起 Emacs |
C-x C-c | 永久退出 Emacs |
:- | :- |
---|---|
C-<key> | 表示按住控件,然后按 <key> |
M-<key> | 表示按 Esc 一次,然后按 <key> |
注意:本备忘单遵循上述规则
返回 | 向前 | 要移动的实体 |
---|---|---|
C-b | C-f | Haracter |
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 | 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 恢复会话 | 恢复因系统崩溃而丢失的文件 |
C-x u C-_ C-/ | 撤消不需要的更改 |
M-x 恢复缓冲器 | 将缓冲区恢复到其原始内容 |
C-l | 重绘垃圾屏幕 |
:- | :- |
---|---|
C-t | 转置字符 |
M-t | 转置词 |
C-x C-t | 转置线 |
C-M-t | 转置性别 |
:- | :- |
---|---|
C-v | 滚动到下一个屏幕 |
M-v | 滚动到上一个屏幕 |
C-x < | 向左滚动 |
C-x > | 向右滚动 |
C-l | 将当前行滚动到 center, top, bottom |
:- | :- |
---|---|
M-g g | 转到行 |
M-g c | 转到字符 |
M-m | 返回缩进 |
:- | :- |
---|---|
C-@ C-SPC | 在标记在这里 |
C-x C-x | 交换点和标记 |
M-@ | 设置标记 arg 单词 |
M-h | 标记段落 |
C-x C-p | 标记页面 |
C-M-@ | 标记性 |
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 | 性爱 |
:- | :- |
---|---|
C-W | 杀死区域 C-w |
M-w | 复制区域杀死环 |
M-z 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 | 缩进 sexp(取决于模式) |
C-x TAB | 缩进区域刚性 arg 列 |
M-; | 缩进评论 |
C-o | 在点后插入换行符 |
C-M-o | 将其余行垂直向下移动 |
C-x C-o | 删除点周围的空行 |
M-^ | 与上一个加入行(带 arg,下一个) |
M-\ | 删除点周围的所有空白 |
M-SPC | 在点上正好放一个空格 |
M-q | 填写段落 |
C-x f | 将填充列设置为 arg |
C-x . | 设置每行开头的前缀 |
M-o | 设置面 |
:- | :- |
---|---|
C-h i | 输入信息文档阅读器 |
C-h S | 在 Info 中查找指定的函数或变量 |
:- | :- |
---|---|
SPC | 向前滚动 |
DEL | 反向滚动 |
b | 节点的开始 |
:- | :- |
---|---|
n | 下一个节点 |
p | 上一个节点 |
u | 提升 |
m | 按名称选择菜单项 |
n | 按编号 (1–9) 选择第 n 个菜单项 |
f | 遵循交叉引用(用 l 返回) |
l | 返回您看到的最后一个节点 |
d | 返回目录节点 |
t | 转到信息文件的顶部节点 |
g | 按名称转到任何节点 |
:- | :- |
---|---|
h | 运行信息教程 |
i | 在索引中查找主题 |
s | 搜索节点以查找正则表达式 |
q | 退出信息 |
以下键在 minibuffer
中定义
:- | :- |
---|---|
TAB | 尽可能完成 |
SPC | 最多完成一个单词 |
RET | 完成并执行 |
? | 显示可能的完成 |
M-p | 获取先前的 minibuffer 输入 |
M-n | 获取稍后的 minibuffer 输入或默认值 |
M-r | 正则表达式向后搜索历史 |
M-s | 正则表达式向前搜索历史 |
C-g | 中止命令 |
键入 C-x
ESC
ESC
以编辑并重复使用 minibuffer
的最后一个命令。键入 F10
以激活文本终端上的菜单栏项
:- | :- |
---|---|
M-. | 查找标签(定义) |
C-u M-. | 查找标签的下一个出现 |
M-x 访问标签表 | 指定一个新的标签文件 |
M-x 标签搜索 | 正则表达式搜索标签表中的所有文件 |
M-x 标签查询替换 | 对所有文件运行查询替换 |
M-, | 继续最后一个标签搜索或查询替换 |
:- | :- |
---|---|
C-x b | 选择另一个缓冲区 |
C-x C-b | 列出所有缓冲区 |
C-x k | 杀死一个缓冲区 |
:- | :- |
---|---|
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 定义 |
:- | :- |
---|---|
. (dot) | 除换行符外的任何单个字符 |
* | 零次或多次重复 |
+ | 一次或多次重复 |
? | 零次或一次重复 |
\ | 引用特殊字符 |
\c | 引用正则表达式特殊字符 c |
| | 替代(“或”) |
\(...\) | 分组 |
\(:?...\) | 害羞的分组 |
\(:NUM...\) | 显式编号分组 |
\n | 与第 n 组相同的文本 |
\b | 在断字时 |
\B | 不在断字 |
开始 | 结束 | 实体 |
---|---|---|
^ | $ | 行 |
\< | \> | 单词 |
\_< | \_> | 象征 |
\‘ | \’ | 缓冲 |
这些 | 其他 | class |
---|---|---|
[...] | [^...] | 显式集 |
\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 | 在window 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 | 评估点前的性 |
C-M-x | 评估电流定义 |
M-x eval-region | 评估区 |
M-: | 读取和评估 minibuffer |
M-x load-library | 从加载路径加载 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 地区 | 检查区域内所有单词的拼写 |
M-x ispell 缓冲区 | 检查整个缓冲区的拼写 |
M-x flyspell 模式 | 切换即时拼写检查 |
(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))))