模式 | 功能 |
基本模式(fundamental mode) | 默认模式,无特殊行为 |
文本模式(text mode) | 书写文字 |
邮件模式(mail mode) | 书写电子邮件 |
阅读电子邮件模式(RMAIL mode) | 阅读和组织电子邮件 |
只读模式(view mode) | 查看文件,不能编辑 |
shell 模式(shell mode) | 运行 shell 命令 |
FTP 模式(ange-ftp mode) | 查看远程系统上的文件 |
Telnet 模式(telnet mode) | 登录到远程系统 |
大纲模式(outline mode) | 书写大纲 |
缩进文本模式(indented text mode) | 自动缩进模式 |
图形模式(picture mode) | 绘制图形 |
Emacs LISP 模式(Emacs LISP mode) | 编辑emacs lisp代码 |
LISP 模式(LISP mode) | 编辑lisp代码 |
LISP 互动模式(LISP interaction mode) | 编辑和运行emacs lisp代码 |
模式 | 功能 |
自动换行模式(auto-fill mode) | 打开文字自动换行模式 |
改写模式(overwrite mode) | 输入时替换字符 |
自动保存模式(auto-save-mode) | 文件按照一定时间自动保存 |
行号模式(line number mode) | 在状态行上显示文本行号 |
缩略词模式(abbrev mode) | 允许使用单词的简写形式 |
VC 模式(VC mode) | 在 Emacs 下使用版本控制系统 |
键盘操作 | 命令名称 | 解释说明 | 实现 |
C-x C-f | find-file | open file | 查找文件并在一个新缓冲区打开 |
C-x C-v | find-alternate-file | — | 读入另一个文件替换掉用 “C-x C-f” 读入的文件 |
C-x i | insert-file | insert file | 把文件插入到光标所在位置 |
C-x C-s | save-buffer | save-buffer | 保存文件 |
C-x C-w | write-file | save buffer as | 把缓冲区内容写入一个文件 |
C-x C-c | save-buffers-kill-emacs | exit emacs | 退出 Emacs |
键盘操作 | 命令名称 | 功能 | |
C-h | help-command | help | 进入 Emacs 的在线帮助系统 |
C-h C-h 或 C-h ? | help-for-help | 帮助命令手册 | |
C-h f | describe-function | 描述 “命令” | 描述 “指定命令” 的在线帮助信息 |
C-h k | describe-key | 描述 “键” | 描述 “指定键” 的在线帮助信息 |
C-h t | help-with-tutorial | emacs tutorial | 启动 Emacs 教程 |
C-h i | info-goto-emacs-command-node | browse manual | 启动 Info 文档阅读器 |
C-h b | describe-bindings | | 当前编辑缓冲区有哪些按键绑定 |
C-h m | describe-mode | | 查看当前编辑缓冲区所在编辑模式的有关资料 |
C-h v | describe-variable | | 显示变量的含义 |
C-h w | where-is | | 显示命令的按键绑定 |
C-h l | view-lossage | | 列出最近输入的100个字符 |
C-h c | describe-key-briefly | | 显示按键组合键运行的命令 |
键盘操作 | 命令名称 | 动作 |
C-f | forward-char | 光标右移一个字符 |
C-b | backward-char | 光标左移一个字符 |
C-p | previous-line | 光标上移一行 |
C-n | next-line | 光标下移一行 |
M-f | forward-word | 光标右移一个单词 |
M-b | backward-word | 光标左移一个单词 |
C-a | beginning-of-line | 光标移到行首 |
C-e | end-of-line | 光标移到行尾 |
M-e | forward-sentence | 光标左移一个句子 |
M-a | backward-sentence | 光标右移一个句子 |
M-} | forward-paragraph | 光标右移一个段落 |
M-{ | backward-paragraph | 光标左移一个段落 |
C-v | scroll-up | 屏幕上卷一屏 |
M-v | scroll-down | 屏幕下卷一屏 |
C-x } | forward-page | 光标右移一页 |
C-x { | backward-page | 光标左移一页 |
M-< | beginning-of-buffer | 光标左移到文件头 |
M-> | end-of-buffer | 光标右移到文件尾 |
无 | goto-line | 光标前进到文件的第 [n] 行 |
无 | goto-char | 光标前进到文件的第 [n] 个字符 |
C-l | recenter | 重新绘制画面,并将当前行放到画面中心处 |
M [n] | digit-argument | 重复执行 [n] 次后续命令 |
C-u [n] | universal-argument | 重复执行 [n] 次后续命令(省略 [n] 时 重复 4 次) |
键盘操作 | 命令名称 | 动作 |
C-d | delete-char | 删除光标所在位置的字符 |
DEL | delete-backward-char | 删除光标左侧的字符 |
M-d | kill-word | 删除光标右侧的单词 |
M-DEL | backward-kill-word | 删除光标左侧的单词 |
C-k | kill-line | 从光标位置删除到行尾 |
M-k | kill-sentence | 删除光标右侧的句子 |
C-x DEL | backward-kill-sentence | 删除光标左侧的句子 |
C-y | yank | 恢复被删除的文本 |
C-w | kill-region | 删除文本块 |
无 | kill-paragraph | 删除光标右侧的段落 |
无 | backward-kill-paragraph | 删除光标左侧的段落 |
键盘操作 | 命令名称 | 动作 |
C-@ 或 C-SPACE | set-mark-command | 标记文本块的开始(或结束)位置 |
C-x C-x | exchange-point-and-mark | 互换插入点和文本标记的位置 |
C-w | kill-region | 删除文本块 |
C-y | yank | 粘贴最近删除或复制的文本 |
M-w | kill-ring-save | 复制文本块 |
M-h | mark-paragraph | 标记段落 |
C-x C-p | mark-page | 标记页面 |
C-x h | mark-whole-buffer | 标记整个缓冲区 |
M-y | yank-pop | 在用过 “C-y” 命令后粘贴更早删除的文本 |
键盘操作 | 命令名称 | 动作 |
C-t | transpose-chars | 交换两个字符的位置 |
M-t | transpose-words | 交换两个单词的位置 |
C-x C-t | transpose-lines | 交换两个文本行的位置 |
无 | transpose-sentences | 交换两个句子的位置 |
无 | transpose-paragraphs | 交换两个段落的位置 |
键盘操作 | 命令名称 | 动作 |
M-c | capitalize-word | 把单词的首字符改为大写 |
M-u | upcase-word | 把单词的字符全部改为大写 |
M-l | downcase-word | 把单词的字符全部改为小写 |
M - M-c | negtive-argument; capitalize-word | 把前一个单词的首字符改为大写 |
M - M-u | negtive-argument; upcase-word | 把前一个单词的字符全部改为大写 |
M - M-l | negtive-argument; downcase-word | 把前一个单词的字符全部改为小写 |
键盘操作 | 命令名称 | 动作 |
C-g | keyboard-quit | 放弃当前命令 |
C-x u | advertised-undo | 撤销上一次编辑 |
C-_ 或 C-/ | undo | 撤销上一次编辑 |
无 | revert-buffer | 把缓冲区恢复到上次文件存盘状态 |
![./photo/GNU Emacs Reference Card.png](https://raw.githubusercontent.com/w-lianfu/edocs/main/./photo/GNU Emacs Reference Card.png)
![./photo/GNU Emacs Reference Card-version22.png](https://raw.githubusercontent.com/w-lianfu/edocs/main/./photo/GNU Emacs Reference Card-version22.png)
键盘操作 | 解释说明 | 命令名称 | 动作 |
C-x d | Open Directory | dired | 启动 Dired |
C | Copy to | dired-do-copy | 复制文件 |
d | Flag | dired-flag-file-deletion | 给文件加上删除标记 |
D | Delete | dired-do-delete | 删除文件 |
e | Find This File | dired-find-file | 编辑文件 |
f | | dired-advertised-find-file | 查找文件(并进行编辑) |
g | Revert Buffer | revert-buffer | 从磁盘上重新读入目录 |
G | Chang Group | dired-do-chgrp | 改变文件的组权限 |
k | | dired-do-kill-lines | 从画面上删除光标所在的那一行 |
m | Mark | dired-mark | 给文件加上 * 待操作标记 |
n | | dired-next-line | 移动到下一行 |
o | Find in Other Window | dired-find-file-other-window | 在另一个窗口里查找文件,并移动到新窗口 |
C-o | Display in Other Window | dired-display-file | 在另一个窗口里查找文件,不移动到新窗口 |
q | | dired-quit | 退出 Dired |
Q | | dired-do-query-replace | 在有待操作标记的文件里对字符串进行查找-替换操作 |
R | Rename to | dired-do-rename | 重新命名文件 |
u | Unmark | dired-unmark | 去掉待操作标记 |
v | View This File | dired-view-file | 查看文件内容 |
x | | dired-do-flagged-delete | 删除有待删除标记”D”的文件 |
Z | Compress | dired-do-compress | 对文件进行压缩或解压缩操作 |
无 | Unmark All | dired-unmark-all-files | 把文件上待操作标记移除 |
~ | Flag Backup Files | dired-flag-backup-files | 给备份文件加上待删除标记(去掉这些标记的命令是 “C-u ~”) |
* | Mark Executables | dired-mark-executables | 给可执行文件加上 * 标记(去掉这些标记的命令是 “C-u *”) |
# | Flag auto-save Files | dired-flag-auto-save-files | 给自动保存文件加上待删除标记(去掉这些标记的命令是 “C-u #”) |
` | Mark Old Backups | dired-clean-directory | 给带编号的备份文件加上待删除标记 |
/ | Mark Directories | dired-mark-directories | 给目录加上 * 标记(去掉这些标记的命令是 “C-u /”) |
= | Diff | dired-diff | 把当前文件与(文本标记处的)另一个文件进行比较 |
无 | Compare With Backup | dired-backup-diff | 把当前文件与它的备份文件进行比较 |
! | Shell command | dired-do-shell-command | 执行shell命令(命令的操作对象是有待操作标记的文件) |
无 | Next Marked | dired-next-marked-file | 移动到有 * 或 D 标记的下一个文件 |
无 | Previous Marked | dired-prev-marked-file | 移动到有 * 或 D 标记的上一个文件 |
%d | Regexp Flag | dired-flag-files-regexp | 给匹配此正则表达式的文件加上待删除标记 |
%m | Regexp Flag | dired-mark-files-regexp | 给匹配此正则表达式的文件加上待操作标记 |
+ | Create Directory | dired-create-directory | 新建目录 |
> | Next Dirline | dired-next-dirline | 移动到下一个目录 |
< | Prev Dirline | dired-prev-dirline | 移动到上一个目录 |
s | | dired-sort-toggle-or-edit | 对Dired编辑缓冲区里的文件清单按日期或文件名重新排序 |
U | | | 取消所有标记 |
^ | | | 移动到上一层目录 |
键盘操作 | 解释说明 | 命令名称 | 动作 |
. | Today | calendar-goto-today | 移动到今天的日期 |
C-f | | calendar-forward-day | 向前移动一天 |
C-b | | calendar-backward-day | 向后移动一天 |
C-n | | calendar-forward-week | 向前移动一周 |
C-p | | calendar-backward-week | 向后移动一周 |
M-} | | calendar-forward-month | 向前移动一个月 |
M-{ | | calendar-backward-month | 向后移动一个月 |
C-x ] | | calendar-forward-year | 向前移动一年 |
C-x [ | | calendar-backward-year | 向后移动一年 |
C-a | Beginning of Week | calendar-beginning-of-week | 移到本星期开始 |
C-e | Endo of Week | calendar-end-of-week | 移到本星期结束 |
M-a | Beginning of Month | calendar-beginning-of-month | 移到本月开始 |
M-e | End of Month | calendar-end-of-month | 移到本月结束 |
M-< | Beginning of Year | calendar-beginning-of-year | 移到本年开始 |
M-> | End of Year | calendar-end-of-year | 移到本年结束 |
C-u n | | universal-argument | 重复执行随后命令n次 |
o | | calendar-other-month | 把制定月份放在日历 |
C-x < | Forward 1 Month | scroll-calendar-left | 前卷一个月 |
C-x > | Backward 1 Month | scroll-calendar-right | 后卷一个月 |
键盘操作 | 命令名称 | 动作 |
C-c C-n | outline-next-visible-heading | 移动到下一个标题 |
C-c C-p | outline-previous-visible-heading | 移动到上一个标题 |
C-c C-f | outline-forward-same-level | 移动到下一个同级标题 |
C-c C-b | outline-backward-same-level | 移动到上一个同级标题 |
C-c C-u | outline-up-heading | 移动到上一级的标题 |
C-c C-t | hide-body | 隐藏全体正文行 |
C-c C-d | hide-subtree | 隐藏某标题的下级标题及正文 |
无 | hide-entry | 隐藏某标题的正文部分(不包括下级标题和正文) |
C-c C-l | hide-leaves | 隐藏某标题的正文部分,同时隐藏下级标题和正文 |
C-c C-a | show-all | 显示所有内容 |
C-c C-s | show-subtree | 显示某标题的下级标题和正文 |
无 | show-entry | 显示某标题的文本(包括下级标题和正文) |
C-c C-k | show-branches | 显示当前标题的正文及所有下级标题的正文 |
C-c C-i | show-children | 显示当前标题的下一级标题(不包括正文) |
键盘操作 | 命令名称 | 动作 |
无 | abbrev-mode | 进入(或退出)单词简写模式 |
无 | define-global-abbrev RET abbrev RET exp RET | 定义一个全局简写词(先输入简写词,后输入短语) |
无 | write-abbrev-file | 保存简写词汇表文件 |
无 | edit-abbrevs | 编辑简写词汇表 |
无 | list-abbrevs | 查看简写词汇表 |
无 | kill-all-abbrevs | 本次编辑工作禁用单词简写模式 |
键盘操作 | 命令名称 | 动作 |
C-s | isearch-forward | 向下递增查找 |
C-r | isearch-backward | 向上递增查找 |
C-g | keyboard-quit | 取消递增查找操作 |
C-s C-w | 无 | 把光标位置处的单词用作查找字符串 |
C-s M-y | 无 | 把删除环中的文本用作查找字符串 |
- 查找字符串时区分大小写(默认不区分大小写):
`M-x set-variable RETURN case-fold-search RETURN nil`
键盘操作 | 命令名称 | 动作 |
M-% | query-replace | 开始 查询-替换 操作 |
C-M-% | query-replace-regexp | 开始 正则查询-替换 操作 |
SPACE 或 y | | 用新字符串替换查询字符串,并前进到下一个位置 |
DEL 或 n | | 不替换;前进到下一个位置 |
. | | 在当前位置做替换后退出 |
, | | 替换并显示替换情况(再次按 SPACE或y 移动到下一个位置) |
! | | 对后面的内容全部替换,不再询问 |
^ | | 返回上一次替换的位置 |
q | | 退出替换操作 |
- 替换时不改变大小写情况:
`M-x set-variable RETURN case-replace RETURN nil`
键盘操作 | 命令名称 | 动作 |
C-x ( | start-kbd-macro | 开始录制一个宏 |
C-x ) | end-kbd-macro | 结束录制宏 |
C-x e | call-last-kbd-macro | 执行最近一次录制的宏 |
键盘操作 | 命令名称 | 动作 |
C-x 1 | delete-other-windows | 关闭所有窗口,只保留当前窗口 |
C-x 0 | delte-window | 关闭当前窗口 |
C-x 2 | split-window-vertically | 把当前窗口分割为上、下两个窗口 |
C-x o | other-frame | 移动到其它窗口 |
键盘操作 | 命令名称 | 解释说明 | 动作 |
C-x b | switch-to-buffer | | 移动到指定编辑缓冲区 |
C-x C-b | list-buffer | List All Buffers | 显示所有编辑缓冲区 |
C-x k | kill-buffer | Kill Current Buffer | 删除当前编辑缓冲区 |
无 | kill-some-buffers | | 以问答方式删除各个编辑缓冲区 |
C-x s | save-some-buffers | | 以问答方式保存修改过的编辑缓冲区 |
键盘操作 | 动作 | 执行情况 |
C-x n 或 SPACE | 移动到下一个编辑缓冲区 | 立即执行 |
C-p | 移动到上一个编辑缓冲区 | 立即执行 |
d 或 k | 给编辑缓冲区加上待删除标记 | 按”x”键时执行 |
s | 给编辑缓冲区加上存盘标记 | 按”x”键时执行 |
u | 移除编辑缓冲区的操作标记 | 立即执行 |
x | 对所有带有操作标记的编辑缓冲区执行相应的操作 | 立即执行 |
DEL | 移除上一个编辑缓冲区的操作标记 | 立即执行 |
% | 转换编辑缓冲区的只读状态 | 立即执行 |
f | 显示当前编辑缓冲区的内容 | 立即执行 |
q | 退出 | 立即执行 |
键盘操作 | 解释说明 | 命令名称 | 动作 |
C-x r m | Set Bookmark | bookmark-set | 设置一个书签 |
C-x r b | Jump to Bookmark | bookmark-jump | 跳转到书签 |
无 | Rename Bookmark | bookmark-rename | 重命名书签 |
无 | Delete Bookmark | bookmark-delete | 删除书签 |
无 | Save | bookmark-save | 保存书签 |
C-x r l | Edit Bookmark List | bookmark-menu-list | 编辑缓冲区 |
无 | Insert Content | bookmark-insert | 把书签文件中的文本插入到指定光标位置上 |
无 | write | bookmark-write | 把书签保存到指定文件中 |
命令 | 动作 |
d | 给书签加上待删除标记 |
r | 书签重命名 |
s | 保存清单里的全部书签 |
f | 显示当前书签 |
m | 给书签加上待显示标记 |
v | 显示有待显示标记的书签;如果没有,显示当前书签 |
t | 切换书签关联文件路径的显示/不显示 |
w | 显示书签关联文件的路径 |
x | 删除有待删除标记的书签 |
u | 移除书签的待操作标记 |
DEL | 移除上一行书签的待操作标记 |
q | 退出 |
键盘操作 | 命令名称 | 动作 |
| neotree-toggle | 显示/隐藏 neotree |
| neotree-show | 显示 neotree |
| neotree-hide | 隐藏 neotree |
| neotree-dir | 显示 neotree, root 为当前文件所在目录 |
A | neotree-stretch-toggle | 最大化/最小化 neotree 窗口 |
H | neotree-hidden-file-toggle | 切换显示隐藏文件 |
g | neotree-refresh | 刷新目录 |
n 或 C-n | neotree-next-line | 下一行 |
p 或 C-p | neotree-previous-line | 上一行 |
SPACE 或 Tab 或 Enter | neotree-quick-look | 若是文件,在其它buffer打开;若是目录,展开/收起目录 |
C-c C-n | neotree-create-node | 创建文件 |
C-c C-d | neotree-delete-node | 删除文件/目录 |
C-d C-r | neotree-rename-node | 重命名文件/目录 |
C-c C-c | neotree-change-root | 改变根目录 |
- 通过emacs -q 启动emacs不会读取.emacs文件配置
(use-package package-name
:ensure t ; 是否一定要确保已安装
:defer t ; 是否要延迟加载
:init (setq ...) ; 初始化配置
:config (...) ; 初始化后的基本配置参数
:bind (...) ; 快捷键绑定
:hook (...) ; hook的绑定)
;; `use-package-always-ensure` 避免每个软件包都加 ":ensure t"
;; `use-package-always-defer` 避免每个软件包都加 ":defer t"
(setq use-package-always-ensure t
use-package-always-defer t
use-package-enable-imenu-support t
use-package-expand-minimally t)
(defconst *is-mac* (eq system-type 'darwin))
(defconst *is-linux* (eq system-type 'gnu/linux))
(defconst *is-windows* (or (eq system-type 'ms-dos) (eq system-type 'windows-nt)))
(defalias 'yes-or-no-p 'y-or-n-p)