> For the complete documentation index, see [llms.txt](https://slackwarecn.gitbook.io/slackbook_cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://slackwarecn.gitbook.io/slackbook_cn/chapter_13/emacs_cheat_sheet.md).

# Emacs 小纪

Emacs 入门容易，要想精通却非常困难。下面是一些有用的 Emacs 命令，其中一些，尤其是选择文本部分，只是简单提了一下。关于这些方面的详细内容在 Emacs 手册或者网上的教程里都能找到，概括性的描述也可以在网上找到。

## Table 13.3. Emacs 小纪

| 命令                                 | 作用                                                                |
| ---------------------------------- | ----------------------------------------------------------------- |
| `C-f`                              | 将光标向右（向前，`f` 代表 forward）移动一个字符                                    |
| `C-b`                              | 将光标向左（向后，`b` 代表 backward）移动一个字符                                   |
| `C-n`                              | 将光标向下（`n` 代表 next）移动一行                                            |
| `C-p`                              | 将光标向上（`p` 代表 previous）移动一行                                        |
| `C-h` `f` `FUNCTION-NAME` `Enter`  | 查看函数 `FUNCTION-NAME` 的说明                                          |
| `C-h` `k` `C-x` `C-c`              | 查看对快捷键 `C-x` `C-c` 所绑定函数的说明                                       |
| `C-h` `t`                          | 显示 Emacs 教程                                                       |
| `C-h` `?`                          | 显示所有关于帮助的函数                                                       |
| `` M-` ``                          | 访问菜单栏                                                             |
| `C-g`                              | 取消当前操作。在 minibuffer 中常会用到                                         |
| `M-x` `FUNCTION-NAME` `Enter`      | 以交互方式调用函数 `FUNCTION-NAME`                                         |
| `M-1` `M-0` `C-n`                  | 将光标向下移动 10 行                                                      |
| `C-u` `10` `C-n`                   | 将光标向下移动 10 行（同上）                                                  |
| `M-x` `beginning-of-line`          | 将光标移动到行首                                                          |
| `M-x` `end-of-line`                | 将光标移动到行尾                                                          |
| `M->`                              | 将光标移动到缓冲区末尾                                                       |
| `M-<`                              | 将光标移动到缓冲区开头                                                       |
| `C-k`                              | 删除从光标开始到行尾的所有字符，并将他们放入 kill ring 中                                |
| `C-space`                          | 进入选择模式（用普通的移动键来移动），再按一下 `C-space` 离开选择模式                          |
| `C-w`                              | 在选择模式中，它用来删除选中的区域，并将他们放入 kill ring                                |
| `M-w`                              | 在选择模式中，它用来将选中区域放入 kill ring                                       |
| `C-y`                              | 把 kill ring 中的内容“拖”出来放在当前光标所在位置上                                  |
| `C-/`                              | 撤销上次动作，与多数编辑器不同的是，撤销动作也可以被撤销                                      |
| `insert`                           | 开启或关闭覆盖输入模式                                                       |
| `C-s` `asdf` `Enter`               | 向下搜索 `asdf`，之后重复按 `C-s` 可以继续搜索之后的 `asdf`，或者按 `C-r` 命令搜索之前的 `asdf` |
| `C-r` `asdf` `Enter`               | 向上搜索 `asdf`，之后重复按 `C-r` 可以继续搜索之前的 `asdf`，或者按 `C-s` 命令搜索之后的 `asdf` |
| `M-%` `old` `Enter` `new` `Enter`  | 每搜索到一个字符串 `old`，都会提示你是否要将其替换成 `new`，可以在提示中输入 `!` 来强制替换所有 `old`    |
| `C-x` `C-c`                        | 退出 Emacs，在这之前会提示你要不要保存未保存的缓冲区                                     |
| `C-x` `C-s`                        | 将当前缓冲区保存到对应的文件                                                    |
| `C-x` `C-w` `new-file.txt` `Enter` | 将当前缓冲区保存到文件 `new-file.txt` 中                                      |
