Emacs 是可扩展的、可定制的、自记录的实时显示文本编辑器。此参考适用于 Emacs 27+
要进入 Emacs,只需输入其名称:
$ emacs
| :- | :- | 
|---|---|
| C-z | 挂起 Emacs | 
| C-xC-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-xC-u | 大写区域 | 
| C-xC-l | 小写区域 | 
| :- | :- | 
|---|---|
| C-xC-f | 将文件读入 Emacs | 
| C-xC-s | 将文件保存回磁盘 | 
| C-xs | 保存所有文件 | 
| C-xi | 将另一个文件的内容插入此缓冲区 | 
| C-xC-v | 将此文件替换为您的文件 | 
| C-xC-w | 将缓冲区写入指定文件 | 
| C-xC-q | 切换缓冲区的只读状态 | 
| :- | :- | 
|---|---|
| C-g | 中止部分键入或执行的命令 | 
| M-xrecover-session | 恢复因系统崩溃而丢失的文件 | 
| C-xuC-_C-/ | 撤消不需要的更改 | 
| M-xrevert-buffer | 将缓冲区恢复到其原始内容 | 
| C-l | 重绘垃圾屏幕 | 
| :- | :- | 
|---|---|
| C-t | 转置字符 | 
| M-t | 转置词 | 
| C-xC-t | 转置线 | 
| C-M-t | 转置性别 | 
| :- | :- | 
|---|---|
| C-v | 滚动到下一个屏幕 | 
| M-v | 滚动到上一个屏幕 | 
| C-x< | 向左滚动 | 
| C-x> | 向右滚动 | 
| C-l | 将当前行滚动到 center, top, bottom | 
| :- | :- | 
|---|---|
| M-gg | 转到行 | 
| M-gc | 转到字符 | 
| M-m | 返回缩进 | 
| :- | :- | 
|---|---|
| C-@C-SPC | 在标记在这里 | 
| C-xC-x | 交换点和标记 | 
| M-@ | 设置标记 arg 单词 | 
| M-h | 标记段落 | 
| C-xC-p | 标记页面 | 
| C-M-@ | 标记性 | 
| C-M-h | 标记功能 | 
| C-xh | 标记整个缓冲区 | 
| 向后 | 向前 | 要杀死的实体 | 
|---|---|---|
| DEL | C-d | 字符 (删除) | 
| M-DEL | M-d | 单词 | 
| M-0C-k | C-k | 行 (到结尾) | 
| C-xDEL | M-k | 句子 | 
| M--C-M-k | C-M-k | 性爱 | 
| :- | :- | 
|---|---|
| C-W | 杀死区域 C-w | 
| M-w | 复制区域杀死环 | 
| M-zchar | 杀死下一次出现的字符 | 
| C-y | 拉回最后一个被杀的东西 | 
| M-y | 用之前的杀戮替换最后的猛拉 | 
| :- | :- | 
|---|---|
| C-x1 | 删除帮助窗口 | 
| C-M-v | 滚动帮助窗口 | 
| C-ha | Apropos:显示匹配字符串的命令 | 
| C-hk | 描述一个键运行的功能 | 
| C-hf | 描述一个函数 | 
| C-hm | 获取特定于模式的信息 | 
帮助系统很简单。键入 C-h(或 F1)并按照说明进行操作。如果您是第一次使用,请键入 C-h t 以获得教程
当显示两个命令时,第二个命令是用于框架而不是窗口的类似命令
| :- | :- | :- | 
|---|---|---|
| C-x51 | C-x1 | 删除所有其他窗口 | 
| C-x52 | C-x2 | 拆分窗口,上方和下方 | 
| C-x50 | C-x0 | 删除此窗口 | 
| :- | :- | :- | 
|---|---|---|
| C-x3 | 拆分窗口,并排 | |
| C-M-v | 滚动其他窗口 | 
| :- | :- | :- | 
|---|---|---|
| C-x5o | C-xo | 将光标切换到另一个窗口 | 
| C-x5b | C-x4b | 在其他窗口中选择缓冲区 | 
| C-x5C-o | C-x4C-o | 在其他窗口中显示缓冲区 | 
| C-x5f | C-x4f | 在其他窗口中查找文件 | 
| C-x5r | C-x4r | 在其他窗口中以只读方式查找文件 | 
| C-x5d | C-x4d | 在其他窗口中运行 Dired | 
| C-x5. | C-x4. | 在其他窗口中查找标签 | 
| :- | :- | :- | 
|---|---|---|
| C-x^ | 让窗户变高 | |
| C-x{ | 缩小窗口 | |
| C-x} | 让窗口变宽 | 
| :- | :- | 
|---|---|
| TAB | 缩进当前行(取决于模式) | 
| C-M-\ | 缩进区域(取决于模式) | 
| C-M-q | 缩进 sexp(取决于模式) | 
| C-xTAB | 缩进区域刚性 arg 列 | 
| M-; | 缩进评论 | 
| C-o | 在点后插入换行符 | 
| C-M-o | 将其余行垂直向下移动 | 
| C-xC-o | 删除点周围的空行 | 
| M-^ | 与上一个加入行(带 arg,下一个) | 
| M-\ | 删除点周围的所有空白 | 
| M-SPC | 在点上正好放一个空格 | 
| M-q | 填写段落 | 
| C-xf | 将填充列设置为 arg | 
| C-x. | 设置每行开头的前缀 | 
| M-o | 设置面 | 
| :- | :- | 
|---|---|
| C-hi | 输入信息文档阅读器 | 
| C-hS | 在 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-uM-. | 查找标签的下一个出现 | 
| M-xvisit-tags-table | 指定一个新的标签文件 | 
| M-xtags-search | 正则表达式搜索标签表中的所有文件 | 
| M-xtags-query-replace | 对所有文件运行查询替换 | 
| M-, | 继续最后一个标签搜索或查询替换 | 
| :- | :- | 
|---|---|
| C-xb | 选择另一个缓冲区 | 
| C-xC-b | 列出所有缓冲区 | 
| C-xk | 杀死一个缓冲区 | 
| :- | :- | 
|---|---|
| C-xrr | 复制矩形进行注册 | 
| C-xrk | 杀死矩形 | 
| C-xry | 拉长矩形 | 
| C-xro | 打开矩形,向右移动文本 | 
| C-xrc | 空白矩形 | 
| C-xrt | 用字符串为每一行添加前缀 | 
| :- | :- | 
|---|---|
| C-x( | 开始定义键盘宏 | 
| C-x) | 结束键盘宏定义 | 
| C-xe | 执行最后定义的键盘宏 | 
| C-uC-x( | 附加到最后一个键盘宏 | 
| M-xname-last-kbd-macro | 命名最后一个键盘宏 | 
| M-xinsert-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-xregexp | 使用正则表达式 | 
| SPC/y | 替换这个,继续下一个 | 
| , | 换这个,别动 | 
| DEL/n | 不更换就跳到下一个 | 
| ! | 替换所有剩余的匹配项 | 
| ^ | 回到上一场比赛 | 
| RET | 退出查询替换 | 
| C-r | 进入递归编辑(C-M-c 退出) | 
| :- | :- | 
|---|---|
| M-! | 执行一个shell命令 | 
| M-& | 异步执行shell命令 | 
| M- | 在区域上运行 shell 命令 | 
| C-uM- | 通过 shell 命令过滤区域 | 
| M-xshell | 在window shell中启动一个shell | 
| :- | :- | 
|---|---|
| C-xRETl | 指定主要语言 | 
| M-xlist-input-methods | 显示所有输入法 | 
| C-\ | 启用或禁用输入法 | 
| C-xRETc | 为下一个命令设置编码系统 | 
| M-xlist-coding-systems | 显示所有编码系统 | 
| M-xprefer-coding-system | 选择首选的编码系统 | 
| :- | :- | 
|---|---|
| C-xrs | 在寄存器中保存区域 | 
| C-xri | 将寄存器内容插入缓冲区 | 
| C-xrSPC | 将点的值保存在寄存器中 | 
| C-xrj | 跳转到保存在寄存器中的点 | 
| :- | :- | 
|---|---|
| C-unum | 数值参数 | 
| M-- | 否定论点 | 
| C-qchar | 带引号的插页 | 
| :- | :- | 
|---|---|
| C-xC-e | 评估点前的性 | 
| C-M-x | 评估电流定义 | 
| M-xeval-region | 评估区 | 
| M-: | 读取和评估 minibuffer | 
| M-xload-library | 从加载路径加载 Lisp 库 | 
| :- | :- | 
|---|---|
| M-xcustomize | 自定义变量和面 | 
在 Emacs Lisp 中进行全局键绑定:
(global-set-key (kbd "C-c g") ’search-forward)
(global-set-key (kbd "M-#") ’query-replace-regexp)
| :- | :- | 
|---|---|
| C-xag | 添加全局缩写 | 
| C-xal | 添加模式本地缩写 | 
| C-xaig | 为这个缩写添加全局扩展 | 
| C-xail | 为这个缩写添加模式本地扩展 | 
| C-xae | 显式扩展缩写 | 
| M-/ | 动态扩展前一个单词 | 
| :- | :- | 
|---|---|
| M-$ | 检查当前单词的拼写 | 
| M-xispell-region | 检查区域内所有单词的拼写 | 
| M-xispell-buffer | 检查整个缓冲区的拼写 | 
| M-xflyspell-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))))