EMACS 快速参考
导航、编辑、缓冲区、搜索、Org 模式、包管理
导航
光标移动
| C-f / C-b | 前进 / 后退一个字符 |
| M-f / M-b | 前进 / 后退一个单词 |
| C-n / C-p | 下一行 / 上一行 |
| C-a / C-e | 行首 / 行尾 |
| M-a / M-e | 句首 / 句尾 |
| C-v / M-v | 向下 / 向上翻页 |
| M-< / M-> | 缓冲区开头 / 结尾 |
| M-g g | 跳转到指定行号 |
屏幕定位
| C-l | 重新居中(循环:顶/中/底) |
| C-M-l | 启发式重新定位窗口 |
编辑
Kill 与 Yank(剪切与粘贴)
| C-k | Kill 到行尾 |
| C-w | Kill 区域(剪切) |
| M-w | 复制区域 |
| C-y | Yank(粘贴) |
| M-y | Yank 后循环 kill ring |
| C-d | 向前删除字符 |
| M-d | 向前 Kill 单词 |
| M-DEL | 向后 Kill 单词 |
撤销与转置
| C-/ or C-_ | 撤销 |
| C-g C-/ | 重做(撤销撤销) |
| C-t | 转置字符 |
| M-t | 转置单词 |
| C-x C-t | 转置行 |
选区
| C-SPC | 设置标记(开始选区) |
| C-x h | 选中整个缓冲区 |
| M-h | 选中段落 |
| C-x C-x | 交换 point 和 mark |
缓冲区与窗口
缓冲区
| C-x b | 切换到缓冲区 |
| C-x C-b | 列出所有缓冲区 |
| C-x k | Kill(关闭)缓冲区 |
| C-x LEFT / RIGHT | 上一个 / 下一个缓冲区 |
窗口
| C-x 2 | 水平分割窗口 |
| C-x 3 | 垂直分割窗口 |
| C-x 0 | 关闭当前窗口 |
| C-x 1 | 关闭其他所有窗口 |
| C-x o | 切换到其他窗口 |
| C-x ^ | 垂直扩大窗口 |
| C-x { | 水平缩小窗口 |
Frame
| C-x 5 2 | 创建新 frame |
| C-x 5 0 | 删除当前 frame |
| C-x 5 o | 切换到其他 frame |
搜索与替换
增量搜索
| C-s | 向前搜索(增量) |
| C-r | 向后搜索(增量) |
| C-s C-s | 重复上次向前搜索 |
| C-M-s | 正则向前搜索 |
| C-M-r | 正则向后搜索 |
| RET | 在当前位置退出搜索 |
| C-g | 取消搜索,回到起点 |
替换
| M-% | 查询替换 |
| C-M-% | 正则查询替换 |
| y | 替换当前匹配 |
| n | 跳过当前匹配 |
| ! | 替换剩余所有 |
| q | 退出替换 |
文件
文件操作
| C-x C-f | 查找(打开)文件 |
| C-x C-s | 保存当前缓冲区 |
| C-x C-w | 另存为(写入新文件) |
| C-x s | 保存所有已修改缓冲区 |
| C-x C-r | 以只读方式打开文件 |
| C-x i | 在 point 处插入文件内容 |
Dired(目录编辑器)
| C-x d | 在 Dired 中打开目录 |
| d / x | 标记待删除 / 执行删除 |
| R | 重命名 / 移动文件 |
| C | 复制文件 |
| + | 创建目录 |
| g | 刷新列表 |
模式
主模式
| M-x fundamental-mode | 纯文本编辑 |
| M-x text-mode | 带填充和拼写的文本 |
| M-x prog-mode | 编程模式基础 |
| M-x python-mode | Python 编辑与缩进 |
| M-x shell-mode | 缓冲区中的交互式 shell |
常用次要模式
| M-x display-line-numbers-mode | 切换行号显示 |
| M-x auto-fill-mode | 在填充列处自动换行 |
| M-x flyspell-mode | 实时拼写检查 |
| M-x column-number-mode | 在模式行显示列号 |
| M-x whitespace-mode | 可视化空白字符 |
| M-x electric-pair-mode | 自动闭合括号和引号 |
Org 模式基础
结构
| * / ** / *** | 1 / 2 / 3 级标题 |
| TAB | 循环切换标题可见性 |
| S-TAB | 循环切换全局可见性 |
| M-RET | 在同级插入标题 |
| M-LEFT / M-RIGHT | 提升 / 降级标题 |
| M-UP / M-DOWN | 上移 / 下移子树 |
TODO 与复选框
| C-c C-t | 循环切换 TODO 状态 |
| C-c C-d | 设置截止日期 |
| C-c C-s | 安排日程 |
| C-c C-c | 切换复选框 [ ] / [X] |
| C-c a | 打开议程视图 |
链接与导出
| C-c C-l | 插入 / 编辑链接 |
| C-c C-o | 打开 point 处的链接 |
| C-c C-e | 导出调度器(HTML、PDF 等) |
包管理
package.el
| M-x list-packages | 浏览可用包 |
| i / d / x | 标记安装 / 删除 / 执行 |
| U | 标记所有可升级包 |
| M-x package-refresh-contents | 刷新包列表 |
use-package(init.el)
(use-package magit
:ensure t
:bind ("C-x g" . magit-status))
(use-package company
:ensure t
:hook (prog-mode . company-mode))
配置
关键配置文件
| ~/.emacs.d/init.el | 主配置文件 |
| ~/.emacs.d/early-init.el | 早期初始化(GUI 前,Emacs 27+) |
| ~/.emacs.d/custom.el | Customize 写入的配置 |
常用配置
(setq inhibit-startup-screen t)
(tool-bar-mode -1)
(set-face-attribute 'default nil :height 120)
(global-display-line-numbers-mode 1)
(setq make-backup-files nil)
帮助系统
| C-h k | 描述快捷键绑定 |
| C-h f | 描述函数 |
| C-h v | 描述变量 |
| C-h m | 描述当前模式 |
| C-h t | 打开 Emacs 教程 |
| C-h i | 打开 Info 文档 |
常用模式
矩形编辑
| C-x SPC | 开始矩形标记模式 |
| C-x r k | Kill 矩形 |
| C-x r y | Yank 矩形 |
| C-x r t | 用字符串替换矩形 |
| C-x r o | 插入空白矩形 |
宏
| C-x ( | 开始录制宏 |
| C-x ) | 停止录制宏 |
| C-x e | 执行上次宏 |
| C-u 10 C-x e | 执行宏 10 次 |
| M-x name-last-kbd-macro | 命名宏以便复用 |
Shell 与执行
| M-x shell | 在缓冲区中打开 shell |
| M-x eshell | Emacs Lisp shell |
| M-! | 运行 shell 命令 |
| M-x eval-buffer | 将整个缓冲区作为 Elisp 求值 |
| C-x C-e | 对 point 前的 Elisp 表达式求值 |