程序员基础能力系列(1)——vim快捷键总结
文章目录
- Normal模式
- Insert模式
- vim的语法
- 可视化模式
- 文本对象
- 移动效率
- 搜索
- 数字和点
- 多文件间的跳转
- 处理包裹字符串
- 替换字符串
- 悬浮显示&大小写&注释
- 窗口管理
- 删除函数
- 掌握宏
Vim是一种可配置的文本编辑器。相比于鼠标操作,vim只依赖于键盘。这一特点使得vim收到非常多程序员的青睐。使用vim可以一定程度提高程序员的开发效率,可以说是程序员必备的技能之一了。本文总结了vim的常用快捷键,当然,一部分快捷键进行了调整,并非vim的默认快捷键。
首先,你需要在vscode中安装vim插件。
Normal模式
功能 | 快捷键 |
---|---|
光标向上 | 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模式
功能 | 快捷键 |
---|---|
进入insert模式(光标前) | i |
进入insert模式(光标后) | a |
进入insert模式(行首) | I |
进入insert模式(行尾) | A |
进入insert模式(行前) | O |
进入insert模式(行后) | o |
vim的语法
操作+动词
操作包括:
功能 | 快捷键 |
---|---|
复制 | 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(复制回寄存器) |