在 VS Code 中流畅的使用 vim(持续更新) 您所在的位置:网站首页 vim修改多行 在 VS Code 中流畅的使用 vim(持续更新)

在 VS Code 中流畅的使用 vim(持续更新)

2023-11-29 10:25| 来源: 网络整理| 查看: 265

image.png 最近在学习使用 vim,希望可以通过vim来提升自己的开发效率。因此特地总结一些平时开发中常用的快捷键,因为我一般在VS Code中使用vim快捷键,所以需要在VS Code中进行一些配置,才可以完整的使用本文中的快捷键。 配置文件我会放到文章的最后,直接我的配置文件复制到VS Code的settings.json文件当中,就可以使用下面所有的快捷键。当然,有兴趣的朋友可以研究一下如何在VS Code中添加更多的vim快捷键。

vim 模式

normal 模式(默认)

insert 模式(输入模式)

按下 i,输入位置会落在当前光标选中位置的前面 按下 a,输入位置在落在当前光标选中位置的后面

visual模式(可视化模式)

v 进入可视化模式(基于字符进行操作) V 进入可视化模式(基于行进行操作)

通常用来选择多行或代码块

control + v 进入可视化模式(基于块进行操作)

通常用来同时操作多行的字符

退出当前模式 esc或j+k(需添加配置) control + [ v 退出可视化模式(字符) V 退出可视化模式(行) 移动

k/j/h/l 向上/下/左/右移动

shift + k/j/h/l 快速向上/下/左/右移动(需要配置 + 搜狗输入法)

移动到行首:

数字键0 ^ 移动到本行第一个不是 blank 字符的位置 (配置后可用H)

blank 字符:空格、tab、换行、回车

移动到行尾: $ g+_ 移动到本行最后一个不是 blank 字符的位置(配置后可用L) 在 vim 中快速移动(shift+k/j/h/l) 修改 VS Code 中的 vim 配置,点击 github.com/VSCodeVim/V… ,复制下面这几条命令 defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false # For VS Code defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false # For VS Code Insider defaults write com.visualstudio.code.oss ApplePressAndHoldEnabled -bool false # For VS Codium defaults write com.microsoft.VSCodeExploration ApplePressAndHoldEnabled -bool false # For VS Codium Exploration users defaults delete -g ApplePressAndHoldEnabled 调整键盘灵活度,设置 => 键盘 ,按键重复和重复前延迟都跳到最右边(Mac) 在搜狗输入法的 ABC 模式下,就可以实现快速移动(点击shift切换搜狗中英文模式) 添加 vim 配置

在 vim 中按下操作符,会进入 pending 模式(添加配置后使用H/L向左/右移动)

y +shift + h复制光标到行前的全部内容 d + shift + l 删除光标到行尾的全部内容 以单词为单位进行移动 e 移动到下一个单词的结尾(从左到右) w 移动到下一个单词的开头(从左到右) b 移动到上一个单词的开头(从右到左,反向操作) g + e 移动到上一个单词的结尾(从右到左,反向操作)

一个符号就是一个单词,如:[

以字符串为单位的移动

字符串:多个单词和符号的组合(通常以空格进行分割)

E 移动到下一个字符串的结尾(从左到右) W 移动到下一个字符串的开头(从左到右) B 移动到上一个字符串的开头(从右到左,反向操作) G + E 移动到上一个字符串的结尾(从右到左,反向操作) vim 删除单个字符 x 删除光标所在的字符 X 删除光标前的字符 s 删除当前光标的字符并进入insert模式 S 删除当前光标所在行并进入insert模式 vim 替换单个字符 r 替换一个字符 R 替换多个字符 vim 移动光标 z + z 将当前行置于屏幕中央 z + t 将当前行置于屏幕顶部 z + b 将当前行置于屏幕底部 g + g 调到文件首部 G 调到文件尾部 行数 + g + g 调到指定行 行数 + G 调到指定行 vim 滚动 control + f 向下滚动一屏 control + b 向上滚动一屏 control + d 向下滚动半屏 control + u 向上滚动半屏 control + e 向下滚动一行(光标不会移动) control + y 向上滚动一行(光标不会移动) vim 快速移动 5 行(需配置J/K) J 或 5 + j向下移动 K 或 5 + k 向上移动 vim 高效移动 vim-easymotion(需在setting.json文件添加配置)

在 vim 中使用 easymotion 需要先开启,还可以在 vim 中修改对应的键位

基于单词的移动 + + w 快速移动到单词的头部(向光标下面进行移动) + + b 快速移动到单词的尾部(向光标上面进行移动) + + e 快速移动到字符的尾部(向光标下面进行移动) + + g + e 快速移动到字符的尾部(向光标上面进行移动) 基于行的移动 + + j 快速移动到某行(向光标下面进行移动) + + k 快速移动到某行(向光标上面进行移动) + + h 快速移动到某行开头、结尾、大小写、_、,和#(向光标上面进行移动) + + l 快速移动到某行开头、结尾、大小写、_、,和#(向光标下面进行移动) + + + j 快速移动到某行(向光标上下任意进行移动) vim搜索(需配置f/F,s/S)

需要在配置文件中开启使用 sneak:

单行内搜索 t+单个字符+回车 正向移动到下一个字符所在之处的前一个字符上 T +单个字符+回车反向移动到上一个字符所在之处的后一个字符上 f +单个字符+回车正向移动到下一个字符所在之处 F +单个字符+回车反向移动到上一个字符所在之处

快速移动时用 f,结合修饰符(c、d)时用t

基于全局进行跳转(基于两个字符进行跳转) s + 两个字符 全局查找(和f查找类似,向下查找) S + 两个字符 全局查找(向上查找) 把s/S的功能添加到f/F(需添加配置) f 替换 s F 替换 S

这样F ,f可以同时搜索一个字符和两个字符

; 重复上次的字符查找命令(跳转到下一个字符的位置) , 反转方向查找上次的字符查找命令(跳转到上一个字符的位置) 给 s/S添加新的功能(需添加配置) s 删除当前字符 C 删除从当前光标到行尾的字符 S 删除本行字符并进入 Insert 模式 vim 全局搜索(和VS Code中的搜索功能类似) / 向后查找 ? 向前查找 n/N 调到下一个/上一个要查找的词的位置 / + 上下左右 查看搜索历史 输入单词的前几个字符进行搜索就可以 / + # 向上查找(精确匹配) / + * 向下查找(精确匹配) 处理包裹字符的符号(vim-surround) c + s + 要添加的符号 + 当前的符号使用新符号替换现在字符两端的符号,例如`cs"`` y + s + 要添加的符号 + 当前的符号 在字符两端添加符号,例如:ysiw"

ysiwt + 标签名 可以使用标签包裹单词

d + s + 当前的符号 删除字符两端的符号 S + 要添加的符号 给选中字符的两端添加符号(可视化模式下使用) vim 常用的组合 cw 删除当前单词(重命名变量名) ea 在当前单词结尾插入 vim 插入 I 在行首插入 A 在行尾插入 O 在行前插入(另起一行) o 在行后插入(另起一行) vim 操作(复制,新增,删除) 操作符 d 删除 c 删除并且进入 insert 模式 y 复制 vim 快捷操作 yy 复制当前行 p 粘贴 dd 删除当前行

这里的复制粘贴与默认的command + c 或 command + v不冲突

vim 撤销和取消撤销 u 撤销刚才的操作 ctrl + r 取消刚才的撤销

这两个操作都是基于vim的可撤销块去进行操作的,可撤销块是指进入插入模式后,每一次的插入或删除内容都会被当成一次修改。

可视化模式结合 k/j/h/l 进行范围操作 v + e 选中当前单词 o 切换可视区的光标位置 g + v 回到上一次选择的选择区域

可视化模式下:选中 + 操作(增删改)

可视化模式常用的开发技巧 多行同时编辑:全部选中(control + v)后使用A或I 复制粘贴:系统的剪切板(command + c/v)和 vim 的剪切板(yy/p)同时使用 尽量少用可视化模式(用最少的按键完成操作) 操作符 + 快速移动(需配置)

在 vim 中按下操作符,会进入 pending 模式,配置后可以用H/L进行左右移动

例如:d + shift + l 删除光标到行尾的全部内容 操作符结合数字使用 数字 + operator + 动作(范围) operator + 数字 + 动作(范围)

示例:d + 3 + w 删除三个单词

点(.)

功能:重复上一次的修改

刚才进行的更新(增删改) 离开 insert 模式之前的全部按键操作记录 删除一个单词的命令如何选择(光标在单词尾部) d + i + w

优先选择可以使用.进行重复操作的命令,如d+i+w

一键移动 一键操作 快速在尾部加; j + L + a + ; j + A + ; 然后就可以使用j + . + j 来一直自动跳转到下一行的尾部并进入 insert 模式 查找手动替换 / + 要查找的词 cw + 要替换的词 n 切换到下一个位置 . 替换

能够重复就不要使用次数(数字)=> 执行

vim 编辑文件 vim test 有 test 文件则进入 test 文件,没有则创建 test 文件并进入 :wq 写入内容并退出 cat test.txt 查看当前 test 文件的内容 :q! 强制退出(不保存当前对文件的修改) 选中函数 v + a + I 选中当前整个函数 v + a + i 选中当前整个函数(不包含最后一个括号) v + i + i 选中当前函数中的内容

上面这三个快捷键组合都是基于缩进进行选择,可以先格式化代码再选择

悬浮显示

g + h 悬浮显示(一般用于查看报错的代码提示信息)

大小写 normal 模式: g + u 变为小写,g + U 变为大写 ,例如:gUiw 把当前单词全部变成大写 可视化模式:u 变成小写,U 变成大写,例如:veU 把当前单词全部变成大写 大小写切换: ~ normal 模式和可视化模式都可以使用 v + e 选中单词,shift + ~ 把单词每个字母都变成大写 注释 g + c 单行注释 g + C 多行注释

normal 模式和可视化模式都可以使用

vim 调用 VS Code 的命令 格式化文档 shift + alt + f或 + f + d 重命名(函数或变量)

f2或+r+n

折叠代码

Mac: alt + command + [ windows: ctrl + shift + [

vim: + [

展示代码

Mac: alt + command + ] windows: ctrl + shift + ]

vim: + ]

窗口管理

使用一下vim快捷键时记得提前设置一下VS Code的按键,避免冲突

新建窗口 ctrl + w v 左右 ctrl + w s 上下 窗口切换 ctrl + w h/j/k/l ctrl + w w 关闭窗口 ctrl + w c 只保留当前窗口,关闭其他所有的窗口 ctrl + w o 新建文件/文件夹

在 keybindings.json 中添加按键配置

切换 files explorer 区域 shift + ctrl + h vim ctrl + ;  vscode 切换 editor 区域 shift + ctrl + i vim ctrl + '  vscode 创建文件 在 files explorer 中:a (推荐) 在 editor 中:leader + n + f vim (推荐) vscode command + n 使用插件 file Utils 创建文件夹 在 files explorer 中:A (推荐) 在 editor 中:leader + n + d vim (推荐) 使用插件 file Utils vim 多文件之间的跳转 标记 m + 小写字母 例如:mm 对单文件进行标记 m + 大写字母 例如:mM 对多文件进行标记 跳转 ' 例如:'m 跳转到标记的行 ``` + 之前标记的字符 例如:``m` 跳转到标记的行和列(更精准) jump to definition g + d 查找定义的变量并进行快速跳转(单文件和多文件都可以查找) l 跳转 / 打开目录 h 回到目录 esc 退出选择的模式 跳转

任何大于一个单词或超过当前行导航的移动都是一个跳转(跳转记录也会被记录到 vim 中)

vim-sneak 的跳转只记录一次

ctrl + i 向后跳转 ctrl + o 向前跳转

常用操作: g + d 查看当前变量的引用,ctrl + o 返回之前查看的位置

记录跳转

vim 保留了移动前位置的记录,可以使用:jumps查看

命令 { 跳转上一个段落 } 跳转下一个段落 vim 文本对象

文本是结构化的,可以快速选择

vim 文本对象用法 操作符(operator) + (内部i / 外部a) + 文本对象 可视化模式 + (内部i / 外部a)+ 文本对象 vim 文本对象 w 一个单词 (或) 一对() b 一对() [或] 一对[] {或} 一对{} B 一对块{} 一对 t XML 标签 ' 一对' " 一对" ```一对` s 一个句子(以.,!或?结尾的语句) p 一个段落 vim 文本对象实践示例 v + i + b 选中括号里面的内容 v + i + ( 选中括号里面的内容(包含括号) d + i + b 删除括号里面的内容 v + i + w 选中当前单词 vim-textobj-arguments i + a 不包含分隔符 a + a 包含分隔符 实践技巧 d + a + a 删除一个参数 c + i + a 修改一个参数 vim-textobj-entire d + a + e 删除当前文本所有内容 d + i + e 删除当前文本所有内容,但是不包含前面和后面的空格 vim 在 VS Code 中操作git 显示侧边代码控制面板 ctrl + shift + g 空格 + g + g git 添加到缓存区(git add .) 空格 + g + s git 提交(git commit) 空格 + g + c git 查看差异(git diff) 空格 + g + d + f git 取消add 空格 + g + u git 取消对文件的修改 空格 + g + c + l vim 在 VS Code 中重构 重构按键 ctrl + shift + r 只展示重构代码相关操作 ctrl + . 展示重构代码和其他选项 vim 选中函数中所有代码 v + i + i 提炼为一个函数 选中要提炼的代码 ctrl + . 选中提炼成一个函数 也可以提炼成一个内联的函数 提炼为一个变量 和提炼为函数操作基本一致 选中变量名,ctrl + . 提炼为一个变量 插件

语法报错的话需要先修改语法错误才可以进行重构操作

hocus pocus(vscode 插件) 先使用变量/函数,再创建变量/函数 +f + f创建函数 +v + v创建变量

这是我的配置文件链接:github.com/MambaNeverO… 文件中大部分地方我添加了注释,后续如果有新的实用按键,我也会持续添加到本文中,配置文件也会持续更新,有兴趣的小伙伴可以点赞收藏一下。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有