首先,你需要在vscode中安装vim插件。
| 功能 | 快捷键 |
|---|---|
| 光标向上 | k |
| 光标向下 | j |
| 光标向左 | h |
| 光标向右 | l |
| 移动到行首(含空格) | 0 |
| 移动到行首(不含空格) | H(代替^) |
| 移动到行尾(含空格) | $ |
| 移动到行尾(不含空格) | L(代替g_) |
| 复制当前行 | yy |
| 粘贴 | p |
| 删除当前行 | dd |
| 删除光标字符 | x |
| 删除光标前的字符 | X |
| 删除光标字符进入insert | s |
| 删除光标所在行进入insert | S |
| 替换一个字符 | r |
| 替换多个字符 | R |
| undo | u |
| redo | ctrl+r |
| 功能 | 快捷键 |
|---|---|
| 进入insert模式(光标前) | i |
| 进入insert模式(光标后) | a |
| 进入insert模式(行首) | I |
| 进入insert模式(行尾) | A |
| 进入insert模式(行前) | O |
| 进入insert模式(行后) | o |
操作+动词
操作包括:
| 功能 | 快捷键 |
|---|---|
| 复制 | y |
| 删除 | d |
| 删除并进入insert模式 | c |
动词包括:
| 功能 | 快捷键 |
|---|---|
| 移动到下一个单词的开头 | w |
| 移动到上一个单词的开头 | b |
| 移动到下一个单词的结尾 | e |
| 移动到上一个单词的结尾 | ge |
组合使用:
| 功能 | 快捷键 |
|---|---|
| 删除当前的单词 | bcw |
| 在单词结尾出添加 | ea |
语法:选中+操作
| 功能 | 快捷键 |
|---|---|
| 字符 | v |
| 行 | V |
| 块 | ctrl+v |
| 退出可视化模式 | esc / ctrl+[ |
| 切换可视区的光标位置 | o |
| 跨多行编辑 | ctrl+v+j/k+A/I |
| 复制/粘贴 | 可视化区域+ctrl+c/v |
语法:
| 功能 | 快捷键 |
|---|---|
| 内部 | i |
| 外部 | a |
文本对象:
| 对象 | 快捷键 |
|---|---|
| 单词 | w |
| () | (/) |
| () | b |
| [] | [/] |
| {} | {/} |
| {}块 | B |
| XML标签 | t |
| ‘’ | ’ |
| “” | " |
| `` | ` |
| 句子 | s |
| 段落 | p |
| 删除一个函数参数 | daa |
| 修改一个函数参数 | cia |
| 功能 | 快捷键 |
|---|---|
| 向下滚动一屏 | ctrl+f |
| 向上滚动一屏 | ctrl+b |
| 向下滚动一行 | ctrl+e |
| 向上滚动一行 | ctrl+y |
| 配置(向下滚动5行) | shift+j |
| 配置(向下滚动5行) | shift+k |
| 将当前行置于屏幕中央 | zz |
| 跳到文件首 | gg |
| 跳到文件尾 | G |
| 跳到指定行数 | 行数+gg/G |
单行搜索
| 功能 | 快捷键 |
|---|---|
| 正向移动到下一个字符所在处 | f |
| 反向移动到上一个字符所在处 | F |
| 正向移动到下一个字符所在处的前一个字符处 | t |
| 反向移动到上一个字符所在处的后一个字符处 | T |
| 重复上次的字符查找指令 | ; |
| 反方向查找上次的字符查找指令 | , |
使用技巧:
查询的时候用 f,删除的时候结合 c/d 使用 t
全局搜索
| 功能 | 快捷键 |
|---|---|
| 模糊搜索,向后查 | /+字符+回车 |
| 模糊搜索,向前查 | ?+字符+回车 |
| 向后查 | n |
| 向前查 | N |
| 查看搜索历史 | /+方向键+回车 |
| 精确查找(区分大小写),向下查 | * |
| 精确查找(区分大小写),向上查 | # |
语法:数字+操作+范围 / 操作+数字+范围
点:重复上一次的修改(增加、删除、修改)
| 功能 | 快捷键 |
|---|---|
| 行尾加分号 | jA; 通过 . 来重复操作 |
| 查找手动替换 | /+字符+n+cw+新字符 通过 . 来重复操作 |
使用场景:写代码过程中,需要去头部进行引用,可暂时标记当前行,gg回头部加引用后,快速跳转回标记处
| 功能 | 快捷键 |
|---|---|
| 单文件行标记 | m+小写字母 |
| 单文件跳转到指定行 | '+小写字母 |
| 单文件跳转到指定标记处 | `+小写字母 |
| 多文件行标记 | m+大写字母 |
| 多文件跳转到指定行 | '+大写字母 |
| 多文件跳转到指定标记处 | `+大写字母 |
| 跳转到变量声明和函数定义/引用 | gd + jk(上下切换) + l(跳转) |
| 向前跳转 | ctrl+o |
| 向后跳转 | ctrl+i |
| 查看跳转记录 | :jumps |
会被记录的跳转包括:文件间跳转/gg/G/标记跳转/gd///?/n/N
| 功能 | 快捷键 |
|---|---|
| 替换包裹字符 | cs+当前包裹字符+替换后的包裹字符 |
| 添加包裹字符 | ys+iw+包裹字符 |
| 删除包裹字符 | ds+包裹字符 |
| 可视化模式下添加包裹字符 | S+包裹字符 |
公式:
:[range]s/{pattern}/{string}/[flags]
| range | 快捷键 |
|---|---|
| $ | 到尾部 |
| % | 全文 |
| number,number | 行范围 |
| flags | 快捷键 |
|---|---|
| g | 全部替换 |
| c | 对话框操作 |
pattern:正则表达式
例如,替换 h1abc 和 h2abc 可以如下操作
h\dabc 或者 h[12]abc
可视化模式下 range已经有了,不需要重新输入,其他操作一致
gb,多选当前字符,键入c,同时编辑
| 功能 | 快捷键 |
|---|---|
| 悬浮显示 | gh |
| normal小写 | gu |
| normal大写 | gU |
| 可视化小写 | u |
| 可视化大写 | U |
| 大小写互换 | ~ |
| 单行注释 | gc |
| 多行(单词)注释 | gC |
| 功能 | 快捷键 |
|---|---|
| 新建窗口 | ctrl+w+v |
| 窗口切换 | ctrl+w+hjkl/w |
| 关闭窗口 | ctrl+w+c |
| 关闭其他窗口 | ctrl+w+o |
| 功能 | 快捷键 |
|---|---|
| 匹配括号 | % |
| 基于缩进删函数 | d+a+I |
| 基于段落删函数 | d+a+p |
| 功能 | 快捷键 |
|---|---|
| 开始录制宏 | q+字符(寄存器名称) |
| 结束录制 | q |
| 查看录制好的宏 | :+reg+空格+字符 |
| 使用宏 | @+字符(寄存器名称) |
| 调用最后一次执行的宏 | @@ |
| 重复执行宏 | 数字+@+字符 |
| 追加宏 | q+大写的字符 |
| 修改宏 | “+字符+p(从寄存器中把宏粘贴出来) 修改后,”+字符+yy(复制回寄存器) |