Vim
2019 linuxVim 中的一些快捷键。
vim 的模式
| 模式 | 说明 |
|---|---|
| 正常模式 | 快捷命令,或者按:输入命令行 |
| 插入模式 | 输入文本,按 i、a、o、s 等进入 |
| 可视模式 | 选择文本,按 v 进入可视模式,V 进入可视行模式, ctrl + v 进入可视块模式 |
插入模式
| 按键 | 动作 |
|---|---|
| a | 在光标所在字符后添加文本 |
| A | 在当前行最后一个字符后添加文本 |
| c | 开始修改操作,允许更改当前行文本 |
| C | 修改从光标位置开始到当前行末尾范围内的内容 |
| i | 在光标所在的字符前插入文本 |
| I | 在当前行开头插入文本 |
| o | 在当前行下方打开一空行并将光标置于该空行行首 |
| O | 在当前行上方打开一空行并将光标置于该空行行首 |
| s | 删除光标所在的一个字符,并进入编辑模式 |
| S | 删除光标所在的整行,光标保留当前行,不同于 dd |
命令模式
| 命令 | 动作 |
|---|---|
| :q | 退出 |
| :q! | 放弃缓冲区内容,并退出 |
| :w | 保存缓冲区内容 |
| :wq | 保存缓冲区内容,并退出 |
| ZZ | 退出,仅当文件在最后一次保存后进行了修改,才保存缓冲区内容 |
| /something | 在后面的文本查找 something,结合 n 键使用 |
| ?something | 在前面的文本查找 something,结合 n 键使用 |
| :s/old/new | 用 new 替换一个 old |
| :s/old/new/g | 用 new 替换当前行所有 old |
| :%s/old/new/g | 用 new 替换所有的的 old |
正常模式
光标移动
| 命令 | 动作 |
|---|---|
| h/← | 光标向左移动一个字符 |
| j/↓ | 光标向下移动一个字符 |
| k/↑ | 光标向上移动一个字符 |
| l/→ | 光标向右移动一个字符 |
| nG/[n]gg | 将光标移到文件 n 行 |
| G | 将光标移到文件末行,gg 可以移到首行 |
| ^ | 将光标移到当前行最开始的字符 |
| $ | 将光标移到当前行最后一个字符 |
| 0 | 将光标移到当前行首 |
| w | 将光标每次前移一词 |
| b | 将光标每次倒退一词 |
| % | 跳转到匹配的项目上,([{}]) |
| f{char} | 将光标移至同一行的下一个{char}字符 |
| F{char} | 将光标移至同一行的上一个{char}字符 |
| t{char} | 将光标移至同一行的下一个{char}字符前 |
| T{char} | 将光标移至同一行的下一个{char}字符后 |
| ; | 配合 f & t,重复一次 |
| , | 配合 f & t,反向重复一次 |
| H | 移动至屏幕顶部一行 |
| M | 移动至屏幕中间一行 |
| L | 移动至屏幕底部一行 |
| zt | 将当前行移动至屏幕顶部 |
| zz | 将当前行移动至屏幕中间 |
| zb | 将当前行移动至屏幕底部 |
| ctrl+U | 向上翻半页 |
| ctrl+B | 上一页 |
| ctrl+D | 向下翻半页 |
| ctrl+F | 下一页 |
| n | 向后查找下一个 |
| N | 向前查找下一个 |
| g; | 上一个修改的地方 |
| g, | 下一个修改的地方 |
| * | 向下搜索光标所在的词 |
| g* | 向下搜索搜标所在的词,部分符合 |
| # | 向上搜索光标所在的词 |
| g# | 向上搜索光标所在的词,部分符合 |
复制剪贴
| 命令 | 动作 |
|---|---|
| x | 剪切光标位置上的字符 |
| r | 代替光标位置上的字符 |
| cc | 改写整行 |
| c[n]w | 改写 n 个词 |
| c[n]c | 改写 n 行 |
| d | 可视模式剪切,也可以加左右方向键进行剪切 |
| dd | 剪切整行 |
| d[n]w | 剪切 n 个词汇, l,h,方向键替换 w 可以选择剪切方向 |
| d[n]d | 删除 n 行 |
| y | 可视模式复制,也可以加左右方向键进行赋值 |
| yy\Y | 复制整行 |
| y[n]w | 赋值 n 个词汇,l,h,方向键替换 w 可以选择复制方向 |
| y[n]y | 复制 n 行 |
| ci[ di[ yi[ | 修改,删除,复制[]之间的内容 |
| ca[ da[ ya[ | 修改,删除,复制[]之间的内容, 包含[] |
| p | 在当前行后面插入此前被复制或剪切的行 |
| P | 在当前行前面插入此前被复制或剪切的行 |
| u | 撤销最近一次所做的修改 |
| ctrl+R | 取消最近的一次撤销 |
| << | 向左缩进一个宽度 |
| >> | 向右缩进一个宽度 |
| e | 重新加载文件 |
| e! | 放弃当前修改,强制重新载入 |
多标签页
| 命令 | 动作 |
|---|---|
| tabe\tabnew | 加上文件名,在新标签页打开文件,否则打开一个空缓冲区 |
| gt\tabn | 移动至下一个标签页 |
| gT\tabp | 移动至上一个标签页 |
| [n]gt | 切换到第 n 个标签页 |
| tabc[lose] | 关闭当前标签页 |
| tabo[nly] | 关闭其他标签页 |
| tabs | 列出所有的标签页 |
| :bd | 关闭 buffer |
记录
q<缓冲器名称>开始进行操作- 操作完毕,在正常模式下按
q记录完毕 @<缓冲器名称>执行[num]@<缓冲器名称>多次执行