本文转载自微信公众号「Piper蛋窝」,作者Piper蛋。转载本文请联系Piper蛋窝公众号。
尽管 VS Code 自带的快捷键已经足够强大 ,但存在一个问题:使用方向键是一个有些“反人类”的行为,双手放在键盘上,如果只敲击字母,那么便无需移动手腕;如果需要去敲击方向键,则需要移动手腕或者小臂。Vim插件让绝大部分敲击集中在字母的区域,让操作更加快捷、舒适。本文我将推荐我常用的Vim操作。
目录
- Vim 插件安装
- Vim 基础
- VS Code 中常用 Vim 组合逻辑
Vim 插件安装
下载 Vim 插件
如上图,下载 Vim 插件。这里需要注意,强烈推荐 不使用Vim自带的组合快捷键 Ctrl ,因为其会覆盖掉 VS Code 本身的快捷键以及其他插件的快捷键 。
取消勾选 useCtrlKeys 设置
如上图,可以在 Settings 中搜索 useCtrlKeys 配置,并取消勾选。
vim scroll
值得注意的是,我们依然可以使用 Ctrl + u 和 Ctrl + d 实现上下滚动页面,滚动行数默认为半页大小。
Vim 基础
这里要介绍的是 Vim 基础中的基础,但还是没有 Vim 基础的初学者也可以去 B 站搜索 Vim 相关的教程再巩固一下(我之后也可能录视频)。
vim 基础
如上图:
- Vim 中默认是 normal 模式,此时敲击字母是在敲击命令,而非编辑文本;输入 i 进入 insert 模式,此时敲击字母才是输入字母
- nsert 模式下,退出键 Escape 回到 normal 模式
- normal 模式下,hjkl分别是左下上右
vim 中 a i o 操作
如上:
- normal 模式下,Shift + a(以后记作A)移到行末,并转为 insert 模式;I是行前
- normal 模式下,o是下插一行,并跳转
vim 中 w b 操作
如上:
- normal 模式下,w是向前移动一个单词,b则是向后移动一个单词
vim 中的复制粘贴
如上:
- normal 模式下,d是开启剪切模式,因此,dw则是剪切一个单词;dd是剪切一行
- normal 模式下,y则是复制,而p是粘贴
vim 中 s x
如上:
- normal 模式下,s是删除当前光标所指并转为 insert 模式,x是删除并且不转换
vim 中 g
如上:
- normal 模式下,15gg是跳转到15行
vim 中的 visual
如上:
- normal 模式下,是开启选中 visual 模式
VS Code 中常用 Vim 组合逻辑
Vim 爱好者常说:Vim是一种逻辑,而非死记硬背快捷键(我还算不上 Vim 爱好者,这句话不是我说的,是 Linux 社区的一些朋友们说的)。
我对于 Vim 『逻辑』的理解,大概如下:
- 大小写是一种相反的逻辑
- VS Code 中一些 Ctrl 与滚动
- (意味着在括号里
展开的解释如下文。
大小写是一种相反的逻辑
- int foo_xyz = 1;
我们知道,当光标在_处时,想要删除 _xyz ,那么就要首先 找到最近的z的位置,然后删除这个区间内的东西。 在 vim 中,则是输入 dfz 来表达, fz 则是 找到 z 的意思 。
vim 中 f 与 F
那么,向前查找是什么呢?答案是大写的 F ,具体例子如上图。
vim 中 o 与 O
如上,用 o 可以很轻松地向下插入一行,而用 O 则是向上插入一行。
VS Code 中一些 Ctrl 与滚动
vim 中的 []
如上,使用 Shift + [] 是以「代码块」为单位跳行。
vim 中 Ctrl + []
如上,Ctrl + [] 实现缩进的调整。这里结合了 visual 模式。
vim 中滚动
如上,[[ 跳到文件首行,而 ]] 则是行末。
vim 中 H L M z
如上,H 是到屏幕的顶部,L 是屏幕的底部,M 是屏幕的中央;而 zz 是『将光标放到屏幕中央,且不移动光标的位置(滚动屏幕)』,zt 是将光标放到顶部,zb 是底部。
i( 意味着在括号里
- print(f"what {s}?")
如上,当我们想清空 print() 函数括号内的东西,我们「有逻辑地」告诉 vim 即可。把光标移到括号内,输入 ci( 或 ci),其中 i( 是『在括号内』。
一种逻辑
如上,不仅是 c 操作,也不仅仅是 () ,对于 ""、[] 等都适用。
此外,还有很多逻辑可以组合,比如:j是向下跳转一行,那么 10j 就是向下10行。 此外,/ 查找功能在 vs code 中同样适用。但是,我更喜欢 vs code 自带的 ctrl + f 查找, vs code 自带的组合键还有哪些妙用呢?我们下回分解。
此外,推荐给大家推荐一本 vs code 的黑宝书,虽然我一般不建议购买「软件类的工具书」,但是这本书还涵盖了 vs code 的社区、历史,由微软的工程师韩老师撰写。因为我是 vs code 社区中比较积极的志愿者,所以有幸得到了本书的签名款。非常全面,vs code 只有你想不到,没有做不到(做不到去 github 上提 issue 呀,马上就可以做到了),读下来还是非常不错的。我这里提供一个链接,希望大家理性消费(毕竟挺厚的)。