vim自用使用指南
vim模式
vim主要分为几种模式:普通、命令、插入、可视
其中普通模式是vim启动时默认的模式,非普通模式之间的切换,需要回到普通模式才能进行切换。
-
普通模式 --> 插入模式:通过
i、a、o
等进入i
在光标前插入I
在行首插入o
在下一行插入O
在上一行插入a
在光标后插入A
在行尾插入 -
插入模式 --> 普通模式:通过
ESC
退出插入模式由于
ESC
键较远,往往的我们会映射一些键作为ESC
,例如j j
、CapsLock
等,这个可以根据个人喜好来进行映射 -
普通模式 --> 可视模式:通过
v
进入 -
可视模式 --> 普通模式:通过
ESC
或者再按一边v
退出 -
普通模式 --> 命令模式:通过
:
进入 -
命令模式 --> 普通模式:命令以回车结束运行,或者通过
ESC
退出
光标移动
vim的光标移动均是在普通模式下移动的
以字符
为单位(类似方向键)的光标移动是使用hjkl
进行移动
以单词
为单位的移动
w
(word)跳到下一个单词的开头b
(begin)跳到本单词或上一个单词开头e
(end)跳到本单词或下一个单词的结尾ge
跳到上一个单词的结尾
以行
为单位的移动
0
跳到行首^
跳到行首开始的第一个非空字符$
跳到行尾gg
跳到第一行G
跳到最后一行
跳转
到同一行下一个指定字符 {char}
为一个字符
f{char}
光标跳到下个{char}
F{char}
光标跳到上个{char}
t{char}
光标跳到下个{char}
前一个字符的位置 //不常用T{char}
光标跳到上个{char}
的后一个字符的位置 //不常用;
重复上次跳转操作,
反向查找上次的查找命令
操作符与动作
操作符也是在普通模式下进行使用。
操作符
是在告诉vim我们要干什么
主要有四个操作符:
-
d
(delete) 删除dd
删除一行ndd
删除n行,n为数字 -
c
(change) 修改(删除并进入插入模式)cc
删除一行并进入插入模式ncc
删除n行并进入插入模式,n为数字 -
y
(yank) 复制yy
复制一行 -
v
(visual) 选中并进入VISUAL
(可视)模式
动作
是告诉vim我们要怎么做,在使用操作符后,我们在的字符处的光标会变成半高的符号,接下来我们加上动作
,注意:再键入一次的d
也是一个动作
动作同样是有i
和a
两个,它们实际上代表的意思是inner
和around
它们主要的区别是包含(i)与不包含(a)两边的符号
一些常见的动作motion
1 | iw : 当前单词 |
以d
(delete)操作符常用的示例有
diw
删除当前单词di( / dib
删除当前小括号内的所有内容 注:b是(的替代
da{ / daB
删除当前包括大括号在内的所有内容 注:B是{的替代
df{char}
删除当前直到{char}处的内容d^ / d$
删除当前直到开头(^) / 结尾处($)的内容die
删除整个文件的内容dit
删除一个HTML标签内的全部内容
一些额外的补充
p
(paste)粘贴u
(undo)撤回一个操作符+动作
上面讲的主要是d、c、y
三个操作符,这三个操作符比较相似,接下来我们说v
v
操作符是进入一个选择的模式,可以快速进入选择模式,进入后可以在后面添加我们的动作,如d
删除选中的,iw
选中一个单词等等
大小写转换
大小写转换比较简单
~
将光标下的字母改变大小写{n}~
将光标位置开始的{n}个字母改变大小写g~~
改变当前行字母的大小写gUU
将当前行的字母改成大写guu
将当前行的字母改成小写gUiw(gUaw)
将光标下的单词改成大写guiw(guaw)
将光标下的单词改成小写
大小写转换也可以配合v
操作符一起使用,在v
操作符选中后,再使用U
转换为大写,或者使用u
转换为小写
开发Tips
-
gd
(goto definition)查看函数实现 -
gh
(goto hover)类似于鼠标悬浮查看的效果 -
gt
往后跳转标签页gT
往前跳转标签页{n}gt
跳转到第{n}个标签页 -
ctrl+0
跳转到资源管理器侧边栏,其他数字代表不同页面space
展开文件夹、打开文件
插件
Easymotion
easymotion
是vim的一个插件,在vscode的vim插件默认自带了这个插件
1 | "vim.easymotion": true |
通过这个来开启,在默认给出的配置文件,该插件是启用的
这个插件增加了快速跳转的功能,通过<leader>
加上一些动作来完成操作,在vscode的vim的默认配置文件中,<leader>
的默认指定为<space>
1 | "vim.leader": "s" |
我们通过这个可以修改<leader>
使用的按键,使用快速跳转模式后,都会出现类似的界面
以上示例是在使用<leader><leader>b
出现的界面,我们按下我们想跳转位置的有颜色的字母即可跳转到对应位置
它的具体用法有以下几种
-
前后位置跳转
<leader><leader>w
(word)当前光标后面位置的单词开头<leader><leader>b
(back)当前光标前面位置的单词开头 -
搜索跳转
<leader><leader>s{char}
(search)搜索全部{char}的位置<leader><leader>f{char}
搜索当前光标后面全部{char}的位置<leader><leader>F{char}
搜索当前光标前面全部{char}的位置
还有很多种用法,可以前往官方提供的文档进行查看
在实际使用中,<leader><leader>w/b
已经涵盖了大部分场景,几乎用不上其他用法
vim-surround
这个插件的主要作用是对含括类符号({}、()、""等
)添加了动作 s
–>surround
(环绕)
-
ds{char}
删除两边的{char} -
cs{char1}{char2}
将两边的{char1}替换为{char2} -
ys{motion}{char}
在动作{motion}选中的部分两端添加{char} -
S{char}
在v模式下用{char}括起来选中的 -
gs{char}
在v模式下用{char}括起来选中的,括号内文本做新一行例:
1
2
3
4Hello world!` =>
`Hello {`
`world`
`}!
建议参考文档、视频
https://github.com/ahrencode/Miscellaneous/blob/master/vim-cheatsheet.pdf