Vim Keymaps
移动
| Keymap | Description |
|---|---|
| h j k l | 左 下 上 右 |
| w | 下个单词的词首 |
| W | 下一个单词的词首(以空格区分单词) |
| e | 下一个单词的词尾 |
| E | 下一个单词的词尾(以空格区分单词) |
| b | 上一个单词的词首 |
| B | 上一个单词的词首(以空格区分单词) |
| n-w/W/e/E/b/B | n 为移动的单词个数 |
| <> | v 模式选中后进行缩进 |
跳转
| Keymap | Description |
|---|---|
| % | 可以匹配{},"",(),[]之间的跳转 |
| H M L | 直接跳转到当前屏幕的顶部、中部、底部 |
| #H | 跳转到当前屏幕的第#行(切记是当前屏幕) |
| #L | 跳转到当前屏幕的第#行(切记是当前屏幕) |
| () | 移动到上/下一个句首 |
| {} | 移动到上/下一个段首 |
| zt | 当前编辑行为屏顶 |
| zz | 当前编辑行为屏中 |
| zb | 当前编辑行为屏尾 |
| G | 直接跳转到文件尾部 |
| gg | 直接跳转到文件顶部 |
| 0 | 跳转到行首 |
| \$ | 跳转到行尾部 |
| 2$ | 跳转到向下两行的尾部 |
| # | 向右跳转#个字符(#跟空格) |
| #G | 跳转第#行 |
| :# | 跳转第#行(#跟空格) |
| fs | 跳转到下一个字母 s 之后 |
| 2fs | 跳转到往下第二个 s 字母之后 |
| Fs | 跳转到上一个字母 s 之后 |
| 2Fs | 跳转到往上第二个 s 字母之后 |
| [[]] | 光标向上/下跳转到代码块开头 |
| gD | 光标跳转到局部变量定义处 |
| '' | 光标跳转到上次停靠处 |
| C-e | 向下滚动一行 |
| C-y | 向上滚动一行 |
| C-d | 向下滚动半屏 |
| C-u | 向上滚动半屏 |
| C-f | 向下滚动一屏 |
| C-b | 向下滚动一屏 |
编辑
新增
| Keymap | Description |
|---|---|
| i | 进入插入模式 |
| I | 在当前行的行首插入 |
| a | 在光标后插入 |
| A | 在当前行的行尾插入 |
| o | 在当前行之后插入新行 |
| O | 在当前行之前插入新行 |
修改
| Keymap | Description |
|---|---|
| r | 替换光标所在的字符 |
| R | 替换光标所到的字符 |
| cc | 取代光标所在整行 |
| C | 取代到行尾部,包括光标处字符 |
| c0 | 取代到行首,不包括光标处字符 |
| cw | 修改光标所在的字符到该单纯结尾 |
| s | 以插入的形式替换光标所在的一个字符 |
| S | 以插入的模式替换整行 |
| ci( | 修改配对标点符号中的文本内容(这里以小括号为例子) |
| di( | 删除配对标点符号中的文本 |
| yi( | 复制配对标点符号中的文本 |
| vi( | v 模式下选中配对符号中的内容 |
| c/d/y/va( | 剪切/删除/复制/选中成对符号及其中的内容 |
删除
| Keymap | Description |
|---|---|
| x | 删除光标右边的字符 |
| nx | 删除光标右边 n 个字符 |
| X | 删除光标左边的字符 |
| nX | 删除光标左边 n 个字符 |
| dl | 删除当前字符,相当与 x |
| dh | 删除前一个字符 |
| dw | 向右删除一个单词(光标之单纯的剩余部分) |
| dnw | 删除 n 个单词 |
| db | 删除到上个单词的开始位置 |
| de | 删除一个单词的结尾位置 |
| dne | 删除光标后 n 个单词 |
| dd | 删除光标所在行 |
| ndd | 向下删除 n 行(包光标所在行) |
| dj | 删除当前行及其下一行 |
| dk | 删除当前行及其上一行 |
| dG | 删除光标所在行到文本末尾 |
| d1G | 删除光标所在行到第一行 |
| dgg | 删除当前行到文本首部所在行 |
| D | 从光标所在位置删除到行尾 |
| d0 | 删除到行首,不包括光标所在字符 |
| :n,$d | 删除 n 行及其后所有行 |
| :1,$d | 删除所有行 |
| :n1,n2d | 删除 n1 到 n2 之间的行 |
| diw | 删除单词(光标在单词开头中间都一样),空格也是一个单词 |
| daw | 删除一个单词和一个空格 |
| dis | 删除一个句子 |
| das | 删除一个句子 |
| dip | 删除一个段落,光标移至该段落下一行行首 |
| dap | 删除一个 ie 段落,光标移至下段最后行行首 |
| daB | 删除{}及其内容 |
| diB | 删除{}中的内容 |
复制/剪切/粘贴
| Keymap | Description |
|---|---|
| yy/Y | 复制当前行 |
| nyy/nY | 复制当前行以下 n 行(包括当前行) |
| p/P | 粘贴在当前光标所在的行下/行上 |
| ddp | 交换当前行和其下一行 |
| xp | 交换两个字符的顺序(光标之后两个字符) |
| Xp | 交换两个字符的顺序(光标之前两个字符) |
| deep | 交换两个单词的顺序 |
| ndd | 剪切当前行以下 n 行(包括当前行) |
| :n1,n2d | 剪切 n2,n2 行之间的内容 |
| :n2,n2 m n3 | 将 n1,n2 行之间内容移动至 n3 行之后 |