VS Code 中的 Vim 操作

开发 前端
尽管 VS Code 自带的快捷键已经足够强大 ,但存在一个问题:使用方向键是一个有些“反人类”的行为,双手放在键盘上,如果只敲击字母,那么便无需移动手腕;如果需要去敲击方向键,则需要移动手腕或者小臂。

[[380740]]

 本文转载自微信公众号「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 与滚动
  • (意味着在括号里

展开的解释如下文。

大小写是一种相反的逻辑

  1. 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( 意味着在括号里

  1. 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 呀,马上就可以做到了),读下来还是非常不错的。我这里提供一个链接,希望大家理性消费(毕竟挺厚的)。

 

责任编辑:武晓燕 来源: Piper蛋窝
相关推荐

2012-11-23 16:46:12

LinuxVim

2021-08-22 17:22:31

VS Code容器开发人员

2021-01-18 17:23:30

代码调试VS Code

2019-06-27 14:30:22

VSCodium开源VS Code

2024-02-29 18:05:21

Code插件工具

2022-11-17 10:23:13

VS CodeCodiumPython

2023-09-21 18:14:34

VSCode扩展工具

2020-02-21 13:22:58

开发者技能工具

2022-06-15 09:48:05

VS CodeVS Codium开源

2020-07-06 14:54:17

Python 开发编程语言

2019-03-29 10:24:49

开发技能代码

2023-12-22 18:36:18

VS Code插件TODO

2021-09-02 10:10:59

技术VS Code实践

2023-10-23 18:01:44

插件服务器扩展

2024-01-17 18:05:51

Code插件平台

2022-04-20 09:02:57

架构

2022-01-07 14:50:46

VS CodeLinux代码

2021-06-28 07:13:34

Vue Code 扩展

2018-10-10 14:21:06

Python 工具程序员

2020-12-25 14:55:13

VS Code代码编程
点赞
收藏

51CTO技术栈公众号