> 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_12/vi_cheat_sheet.md).

# vi 小纪

因为 vi 较难上手，所以我准备了一份在你入门之前对你都有帮助的小表格。

| 命令              | 动作                        |
| --------------- | ------------------------- |
| `h`             | 光标左移一个字符                  |
| `j`             | 光标下移一行                    |
| `k`             | 光标上移一行                    |
| `l`             | 光标右移一个字符                  |
| `10j`           | 光标下移 10 行                 |
| `G`             | 移动到文件尾                    |
| `^`             | 移动到行首                     |
| `$`             | 移动到行末                     |
| `dd`            | 删除光标所在行（并存入复制缓冲区）         |
| `dd`            | 删除光标所在行及其后四行（并存入复制缓冲区）    |
| `sw`            | 删除光标所在单词（并存入复制缓冲区）        |
| `5dw`           | 删除光标所在单词及其后四个单词（并存入复制缓冲区） |
| `yy`            | 将光标所在行存入复制缓冲区             |
| `yw`            | 将光标所在单词存入复制缓冲区            |
| `5yw`           | 将光标所在单词及其后四个单词存入复制缓冲区     |
| `p`             | 将复制缓冲区的内容插入倒光标位置之后        |
| `P`             | 将复制缓冲区的内容插入倒光标位置之前        |
| `r`             | 替换光标所在字符                  |
| `R`             | 替换光标所在字符及其后若干字符           |
| `x`             | 删除光标所在字符                  |
| `X`             | 删除光标所在字符的上一个字符            |
| `u`             | 撤销上一次操作                   |
| `:s/old/new/g`  | 将当前行所有的 `old` 替换为 `new`   |
| `:%s/old/new/g` | 将当前行所有的 `old` 替换为 `new`   |
| `/asdf`         | 定位到下一处 `asdf` 所在位置        |
| `:q`            | 退出 vi                     |
| `:w`            | 保存当前文件                    |
| `:w file`       | 保存当前文件到 `file`            |
| `:x`            | 保存并退出                     |

> 表 12.2：vi 的指令
