看来我已经全部掌握这些快捷键了。。

光标移动
| 快捷键 | 说明 |
|---|---|
| h | 左移 |
| j | 下移 |
| k | 上移 |
| l | 右移 |
| w | 跳到下一个词开始的位置 (标点符号也算) |
| W | 跳过一个词 (不算标点) |
| e | 跳到单词结尾 (算标点) |
| E | 同上 (不算标点) |
| b | 跳到单词开头 (算标点) |
| B | 同上 (不算标点) |
| 0 | 跳到行首 |
| ^ | 跳到行第一个非空白字符处 |
| $ | 跳到行尾 |
| G | 跳转到行尾,前面加数字可跳转到该行 |
| 提示: | 在移动命令前面加数字可以重复执行,比如 4j 向下移动四行。 |
| 插入模式 | 进入插入 / 追加文本 |
| i | 在光标处进入插入模式 |
| I | 在行首进入插入模式 |
| a | 在光标后进入插入模式 |
| A | 在行尾进入插入模式 |
| o | 在当前行下方追加一空行 |
| O | 在当前行上方追加一空行 |
| ea | 在单词结尾进入插入模式 |
| Esc | 退出插入模式 |
编辑
| 快捷键 | 说明 |
|---|---|
| r | 修改单个字符,无需进入插入模式 |
| J | 将下一行移到当前行尾 |
| cc | 删除一整行进入插入模式 |
| cw | 删除单词进入插入模式 |
| c$ | 从当前光标删到行尾并进入插入模式 |
| s | 删除一字符并进入插入模式 |
| S | 删除一整行并进入插入模式 (和 cc 一样) |
| xp | 交换两个字符 (先删除一个字符在粘贴) |
| u | 撤销 |
| . | 重复上一个动作 |
选择文本 (可视化模式)
| 快捷键 | 说明 |
|---|---|
| v | 进入基于字符的可视化模式, 可标记行, 然后下指令 (比如y 复制) |
| V | 进入基于行的可视化模式 |
| o | 移到选择的文本另一端 |
| Ctrl+v | 进入基于块的可视化模式 |
| O | 移到块的另一个角 |
| aw | 选定一个单词 |
| ab | 选定一个括号 (*) 块 (包括括号()) |
| aB | 选定一个括号 {*} 块 (包括括号{}) |
| ib | 选定 () 内部内容 |
| iB | 选定 {} 内部内容 |
| Esc | 退出可视化模式 |
可视化操作
| 快捷键 | 说明 |
|---|---|
| > | 右移 |
| < | 左移 |
| y | 复制选中的文本 |
| d | 删除选中的文本 |
| ~ | 大小写转换 |
复制粘贴
| 快捷键 | 说明 |
|---|---|
| yy | 复制一行 |
| 2yy | 复制两行 |
| yw | 复制一个单词 |
| y$ | 从当前光标复制到行尾 |
| p | 粘贴到光标后 |
| P | 粘贴到光标前 |
| dd | 删除(剪切)一行 |
| dw | 删除(剪切)当前单词 |
| x | 删除(剪切)当前字符 |
退出 VIM
| 快捷键 | 说明 |
|---|---|
| :w | 保存文件,不退出 |
| :wq | 保存文件并退出 |
| :q | 退出,若发生了修改而没保存则无法退出 |
| :q! | 强制退出 |
搜索 / 替换
| 快捷键 | 说明 |
|---|---|
| /pattern | 往后搜索字符串 |
| ?pattern | 往前搜索字符串 |
| n | 向相同方向搜索下一个字符串 |
| N | 向相反方向搜索下一个字符串 |
| :%s/old/new/g | 将所有的 old 替换成new |
| :%s/old/new/gc | 同上,只不过是一个一个询问 |
多文件操作
| 快捷键 | 说明 |
|---|---|
| :e filename | 在新缓冲区编辑文件 |
| :bnext (或 :bn) | 跳到下一个缓冲区 |
| :bprev (或 :bp) | 跳到前一个缓冲区 |
| :bd | 删除当前缓冲区 (即关闭文件) |
| :sp filename | 在新缓冲区打开一个文件并分割窗口 |
| ctrl+ws | 分割窗口 |
| ctrl+ww | 切换窗口 |
| ctrl+wq | 关闭窗口 |
| ctrl+wv | 垂直分割窗口 |