Emacs 操作速查手册:jaywcjlove/reference 中的编辑器全量参考
Emacs 操作速查手册jaywcjlove/reference 中的编辑器全量参考【免费下载链接】reference为开发人员分享快速参考备忘清单(速查表)项目地址: https://gitcode.com/jaywcjlove/referenceEmacs 是一款可扩展、可定制、自记录self-documenting的实时显示文本编辑器其强大的键位体系与 Lisp 扩展机制使其成为无数开发者的长期工作环境。本文基于 jaywcjlove/reference 仓库中的 docs/emacs.md 备忘清单展开系统整理 Emacs 27 的核心操作、快捷键、搜索与替换、窗口管理、宏录制及 Emacs Lisp 定制方法帮助读者快速建立完整可用的编辑器操作地图。本清单的背景与适用范围该清单收录于 jaywcjlove/reference 项目是面向开发者的快速参考备忘清单速查表体系中的编辑器类条目在 README.md 的工具分类下以 Emacs 之名索引。文中的键位约定与命令名称均以 Emacs 27 及以上版本为基准适用于 GUI 与文本终端两种形态。入门启动、挂起与退出启动 Emacs要进入 Emacs只需在终端输入其名称$ emacs启动后的基础生命周期操作| 快捷键 | 说明 | | :- | :- | |C-z| 挂起 Emacs | |C-xC-c| 永久退出 Emacs |挂起suspend与退出不同C-z只是把 Emacs 暂时放到后台终端模式下回到 Shell进程与缓冲区状态均保留C-x C-c则会结束 Emacs 进程未保存的缓冲区会逐一询问是否保存。按键记法约定整份清单遵循统一的修饰键记法理解它们是使用一切快捷键的前提| 记法 | 含义 | | :- | :- | |C-key| 按住 Control 键然后按key| |M-key| 按一次Esc键然后按key|在多数终端配置中M-也可以映射为 Alt 键但按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| Sexp符号表达式 | |C-M-a|C-M-e| 函数 | |M-|M-| 缓冲区开始或结束 |滚动与跳转当缓冲区内容超出屏幕时滚动与定点跳转是高效导航的关键| 快捷键 | 说明 | | :- | :- | |C-v| 滚动到下一个屏幕 | |M-v| 滚动到上一个屏幕 | |C-x| 向左滚动 | |C-x| 向右滚动 | |C-l| 将当前行滚动到屏幕中央、顶部、底部连续按循环切换 |定点跳转| 快捷键 | 说明 | | :- | :- | |M-gg| 转到指定行 | |M-gc| 转到指定字符 | |M-m| 返回行首缩进处back-to-indentation |文本编辑基础大小写转换| 快捷键 | 说明 | | :- | :- | |M-u| 大写单词 | |M-l| 小写单词 | |M-c| 单词首字母大写 | |C-xC-u| 大写区域region | |C-xC-l| 小写区域 |转置Transposing| 快捷键 | 说明 | | :- | :- | |C-t| 转置字符 | |M-t| 转置单词 | |C-xC-t| 转置行 | |C-M-t| 转置 Sexp |杀死与删除Emacs 中删除与杀死kill是两套语义被杀死的内容会进入 kill ring剪贴环可随时拉回yank而DEL/C-d这类删除操作不进入 kill ring。下表按向后 / 向前列出| 向后 | 向前 | 要杀死的实体 | | :- | :- | :- | |DEL|C-d| 字符删除 | |M-DEL|M-d| 单词 | |M-0C-k|C-k| 行到结尾 | |C-xDEL|M-k| 句子 | |M--C-M-k|C-M-k| Sexp |区域与 kill ring 操作| 快捷键 | 说明 | | :- | :- | |C-w| 杀死区域 | |M-w| 复制区域到 kill ring不删除 | |M-zchar| 杀死直到下一次出现指定字符为止 | |C-y| 拉回yank最后一个被杀死的内容 | |M-y| 用更早的杀死记录替换刚拉回的内容配合C-y循环浏览 kill ring |C-k默认只杀死从光标到行尾的内容不含换行符使用前缀参数M-0 C-k则会连同换行符一起杀死这是逐行精确清理的常用技巧。标记与区域标记mark与点point共同界定区域region是批量操作的基础| 快捷键 | 说明 | | :- | :- | |C-/C-SPC| 在此处设置标记 | |C-xC-x| 交换点和标记 | |M-| 设置标记并移动 arg 个单词 | |M-h| 标记整个段落 | |C-xC-p| 标记整个页面 | |C-M-| 标记 Sexp | |C-M-h| 标记整个函数 | |C-xh| 标记整个缓冲区 |文件操作| 快捷键 | 说明 | | :- | :- | |C-xC-f| 将文件读入 Emacsfind-file | |C-xC-s| 将文件保存回磁盘 | |C-xs| 保存所有文件逐个询问 | |C-xi| 将另一个文件的内容插入当前缓冲区 | |C-xC-v| 用新文件替换当前文件 | |C-xC-w| 将缓冲区内容写入指定文件另存为 | |C-xC-q| 切换缓冲区的只读状态 |错误恢复与安全网编辑过程难免出错Emacs 提供多层次的撤销与恢复手段| 快捷键 / 命令 | 说明 | | :- | :- | |C-g| 中止部分键入或正在执行的命令 | |M-xrecover-session| 恢复因系统崩溃而丢失的文件 | |C-xu/C-_/C-/| 撤销不需要的更改 | |M-xrevert-buffer| 将缓冲区恢复到磁盘上的原始内容 | |C-l| 重绘redraw杂乱的屏幕 |C-g是 Emacs 的万能取消键在误输入、命令卡死或进入递归编辑时连续按C-g都能安全退回到正常状态。若在C-s增量搜索中按C-g则只取消尚未匹配的部分保留已匹配的搜索。获取帮助自文档化系统Emacs 的自我文档化特性使帮助触手可及。键入C-h或F1并跟随提示即可首次使用者可键入C-h t进入内置教程Emacs Tutorial| 快捷键 | 说明 | | :- | :- | |C-x1| 删除帮助窗口 | |C-M-v| 滚动帮助窗口 | |C-ha| Apropos显示匹配字符串的所有命令 | |C-hk| 描述某个按键所运行的函数 | |C-hf| 描述某个函数 | |C-hm| 获取当前模式major/minor mode专属信息 |多窗口与多框架Emacs 的窗口window指同一框架frame内的窗格。下表同时给出窗口版本与框架版本第二列为框架版本命令作用于独立窗口框架删除与拆分| 框架命令 | 窗口命令 | 说明 | | :- | :- | :- | |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.| 在其他窗口中查找标签tag |窗口尺寸调整| 快捷键 | 说明 | | :- | :- | |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-^| 与上一行合并带前缀参数则与下一行 | |M-\| 删除光标周围的所有空白 | |M-SPC| 在光标处只保留一个空格 | |M-q| 填充fill当前段落 | |C-xf| 将填充列fill-column设置为 arg | |C-x.| 设置每行开头的行前缀 | |M-o| 设置文本的面face即字体与颜色样式 |格式化命令大量依赖当前主模式major mode的缩进规则在 Lisp 类代码中TAB遵循括号对齐规则在 C/Java 等模式中则遵循各自的缩进风格这是 Emacs模式驱动设计的直接体现。信息阅读器InfoEmacs 自带 Info 超文本文档系统可用于阅读 GNU 手册| 快捷键 | 说明 | | :- | :- | |C-hi| 进入 Info 文档阅读器 | |C-hS| 在 Info 中查找指定的函数或变量 |节点内移动| 快捷键 | 说明 | | :- | :- | |SPC| 向前滚动 | |DEL| 反向滚动 | |b| 回到节点开头 |节点之间移动| 快捷键 | 说明 | | :- | :- | |n| 下一个节点 | |p| 上一个节点 | |u| 上升到父节点 | |m| 按名称选择菜单项 | |1–9| 按编号选择第 n 个菜单项 | |f| 跟随交叉引用用l返回 | |l| 返回上一个浏览过的节点 | |d| 返回目录节点 | |t| 转到 Info 文件的顶部节点 | |g| 按名称跳转到任意节点 |其他 Info 操作| 快捷键 | 说明 | | :- | :- | |h| 运行 Info 教程 | |i| 在索引中查找主题 | |s| 在节点中按正则表达式搜索 | |q| 退出 Info |小缓冲区Minibuffer小缓冲区用于命令输入、文件选择与完成completion。以下是其中定义的键| 快捷键 | 说明 | | :- | :- | |TAB| 尽可能完整地补全 | |SPC| 最多补全一个单词 | |RET| 完成输入并执行 | |?| 显示所有可能的补全项 | |M-p| 取上一条 minibuffer 历史输入 | |M-n| 取下一条 minibuffer 输入或默认值 | |M-r| 按正则表达式向后搜索历史 | |M-s| 按正则表达式向前搜索历史 | |C-g| 中止命令 |键入C-xESCESC可以编辑并复用 minibuffer 中最后执行的命令在文本终端上键入F10可激活菜单栏。缓冲器Buffer管理| 快捷键 | 说明 | | :- | :- | |C-xb| 选择另一个缓冲区 | |C-xC-b| 列出所有缓冲区 | |C-xk| 杀死关闭一个缓冲区 |标签Tags标签表用于在大型工程中定位符号定义| 快捷键 / 命令 | 说明 | | :- | :- | |M-.| 查找标签跳到定义处 | |C-uM-.| 查找标签的下一次出现 | |M-xvisit-tags-table| 指定一个新的标签文件TAGS | |M-xtags-search| 在标签表覆盖的所有文件中做正则搜索 | |M-xtags-query-replace| 在所有文件中执行查询替换 | |M-,| 继续上一次标签搜索或查询替换 |矩形操作矩形rectangle操作面向列状文本区域常用于代码块缩进、表格对齐与多列注释| 快捷键 | 说明 | | :- | :- | |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 定义便于保存复用 |Emacs 搜索正则表达式常用构造Emacs 正则表达式的分组与引用风格与 Perl 类正则有所不同注意区分| 写法 | 说明 | | :- | :- | |.dot | 除换行符外的任意单个字符 | |*| 零次或多次重复 | || 一次或多次重复 | |?| 零次或一次重复 | |\| 引用特殊字符 | |\c| 引用正则表达式特殊字符 c | |\|| 替代或 | |\(...\)| 分组 | |\(:?...\)| 非捕获分组shy group | |\(:NUM...\)| 显式编号分组 | |\n| 与第 n 组相同的文本 | |\b| 单词边界处于断字位置 | |\B| 非单词边界不处于断字位置 |正则表达式条目边界| 开始 | 结束 | 实体 | | :- | :- | :- | |^|$| 行 | |\|\| 单词 | |\_|\_| 符号symbol | |\‘|\’| 缓冲区 |正则表达式字符集与分类| 这些 | 其他 | 说明 | | :- | :- | :- | |[...]|[^...]| 显式字符集/补集 | |\w|\W| 单词语法字符 | |\sc|\Sc| 具有语法syntaxc 的字符 | |\cc|\Cc| 属于类别categoryc 的字符 |增量搜索Incremental Search增量搜索随键入即时定位| 快捷键 | 说明 | | :- | :- | |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只取消尚未匹配的部分已匹配的内容会保留。查询替换Query Replace| 快捷键 / 按键 | 说明 | | :- | :- | |M-%| 以交互方式替换文本字符串 | |M-xregexpquery-replace-regexp | 使用正则表达式替换 | |SPC/y| 替换当前匹配继续下一个 | |,| 替换当前匹配但停留不动 | |DEL/n| 不替换跳到下一个 | |!| 替换所有剩余匹配项 | |^| 回到上一处匹配 | |RET| 退出查询替换 | |C-r| 进入递归编辑用C-M-c退出 |杂项操作Shell 集成| 快捷键 / 命令 | 说明 | | :- | :- | |M-!| 执行一条 shell 命令 | |M-| 异步执行 shell 命令 | |M-\|| 在区域上运行 shell 命令区域作为输入 | |C-uM-\|| 通过 shell 命令过滤区域以输出替换区域 | |M-xshell| 在窗口中启动一个交互式 shell |国际字符集与编码| 快捷键 / 命令 | 说明 | | :- | :- | |C-xRETl| 指定主要语言环境locale | |M-xlist-input-methods| 显示所有输入法 | |C-\| 启用或禁用输入法 | |C-xRETc| 为下一个命令设置编码系统 | |M-xlist-coding-systems| 显示所有编码系统 | |M-xprefer-coding-system| 选择首选的编码系统 |寄存器Registers寄存器可保存文本、位置等多种数据| 快捷键 | 说明 | | :- | :- | |C-xrs| 将区域保存到寄存器 | |C-xri| 将寄存器内容插入缓冲区 | |C-xrSPC| 将点的位置保存到寄存器 | |C-xrj| 跳转到寄存器中保存的位置 |数值参数与其他| 快捷键 | 说明 | | :- | :- | |C-unum| 数值参数为命令提供重复次数或参数 | |M--| 否定参数 | |C-qchar| 引用插入按字面插入特殊字符 |处理 Emacs Lisp 的命令Emacs 的可扩展性源于 Lisp 求值能力常用求值入口| 快捷键 / 命令 | 说明 | | :- | :- | |C-xC-e| 求值光标前的 Sexp | |C-M-x| 求值当前定义defun 等 | |M-xeval-region| 求值区域内的代码 | |M-:| 在 minibuffer 中读取并求值表达式 | |M-xload-library| 从加载路径加载 Lisp 库 |简单定制图形化定制键入M-x customize进入 Customize 界面可交互地定制变量variables与面facesEmacs 会把修改写入配置文件。全局键绑定示例在 Emacs Lisp 中做全局键绑定(global-set-key (kbd C-c g) search-forward) (global-set-key (kbd M-#) query-replace-regexp)kbd宏将按键描述字符串解析为键向量global-set-key将其绑定到指定命令符号。上述两行将C-c g绑定到向前搜索、M-#绑定到正则查询替换放入配置文件如~/.emacs或~/.emacs.d/init.el后即可生效。缩写Abbrevs| 快捷键 | 说明 | | :- | :- | |C-xag| 添加全局缩写 | |C-xal| 添加模式局部缩写 | |C-xaig| 为当前缩写添加全局展开定义 | |C-xail| 为当前缩写添加模式局部展开定义 | |C-xae| 显式展开缩写 | |M-/| 动态展开前一个单词按字典补全 |拼写检查| 快捷键 / 命令 | 说明 | | :- | :- | |M-$| 检查当前单词的拼写 | |M-xispell-region| 检查区域内所有单词的拼写 | |M-xispell-buffer| 检查整个缓冲区的拼写 | |M-xflyspell-mode| 切换即时拼写检查输入即检查 |编写自定义命令命令语法Emacs 命令本质上是带interactive声明的 Lisp 函数其骨架如下(defun command-name (args) documentation (interactive template) body)interactive的模板字符串声明了该函数如何从用户输入获取参数是普通函数与可交互命令的分水岭。完整示例(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))))该命令把当前行重定位到窗口顶部无前缀参数时调用(recenter 0)将光标行移到窗口第一行带前缀参数时则通过prefix-numeric-value将参数解析为数字把点移动到指定行后重定位。保存此定义后可用C-x C-e求值并用M-x this-line-to-top-of-window调用。学习路径建议综合本清单内容可形成如下实战路径先掌握入门部分的启动、退出与按键记法随后用移动、滚动、跳转建立导航能力以杀死与删除、标记、文件操作完成日常编辑闭环再通过搜索与替换提升文本处理效率最后结合多窗口、宏、寄存器、Lisp 定制进入高级工作流。遇到不熟悉的按键时随时用C-h k、C-h f与C-h t向 Emacs 自身求助这正是其自文档化设计的核心价值所在。【免费下载链接】reference为开发人员分享快速参考备忘清单(速查表)项目地址: https://gitcode.com/jaywcjlove/reference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考