VS Code vim 操作指南
type
Post
status
Published
date
Jun 24, 2023
slug
vscode-vim
summary
tags
VS Code
vim
Linux
工具
开发
icon
首先在 VS Code 中安装
vim
插件一个很厉害的博客:vi/vim 使用进阶:目录 - 易水博客
默认操作
⌘ b
左侧侧边栏展示/隐藏
⌘ 0
光标聚焦到左侧侧边栏。默认是文件浏览器,使用j/k
可以在目录树中选中文件或目录,o
或l
打开目录或文件,h
收起当前目录
⌘ k ⌘ \
上下分屏(split up, 将当前打开的窗格放到上方)
⌘ 数字1/2/3...
光标在不同窗格(或称为组)跳转(没有的话会新建窗格)
⌘ w
关闭当前文件,如果窗格内只剩最后一个,关闭后窗格也会关闭
⌃ 数字1/2/3...
在当前窗格内不同 tab 间跳转,1 是左侧第一个,0 是最右侧
⌘ Enter
在当前行下方新建一行。(与 vim 的o
不同之处在于前者并不会改变所处模式,normal 模式 或 insert 模式下均保持按下快捷键前的模式)
- 行内多用 f/F(往回找)/t(落在字符前方),大小写敏感 ⇒ 可被 easymotion 替代
- / 搜索,回车后(表示选中),cw/x/diw
数字G
直达某行
zz
将当前行放到屏幕中间,zt/zb
当前行置顶/置底
Ctrl f/b
向上/下滚动一页
Ctrl d/u
向上/下滚动半页
Ctrl e/y
向上/下滚动一行
⇧ i/a
行首/尾插入
w
含义解释:- 以
install zsh
为例,光标在 n 处,w
表示nstall空格
iw
可选中整个单词(不包括末尾空格)
- 删除:
dw
,d3w
,d空格
或dl
删除光标所在字符(x
),d数字j
删掉本行及下几行。D
从当前光标(含)删至行尾
- 更改:
cc
改一行,c3j
改当前行及下几行,c数字w
,c数字iw
C
改当前光标(含)删至行尾
r字符
替换光标所在字符
⇧ j
将下一行追加到本行行尾
- 全局替换:
:%s/foo/bar/g
- 粘贴:
- 复制一行或多行(如
yy
dd
y3j
)后,⇧ p
在当前行上面粘贴 - 复制单词或字符(如
yw
y3iw
yl
)后,p
/⇧p
在当前光标后/前面复制
- 选择
v
进入选择模式,使用 f , F, t 或 / 等搜索可划定范围,可多次重复搜索以逐步扩大范围⌃ v
块选择。例如光标在行首,进入块选择,按下j
或数字G
选中多行,使用r
后输入 # 注释这些行。(在 VS Code 中,⇧ v
进入行选择,选择若干行后,⌘ /
注释更方便)使用gc
注释,gC
- 块代码注释。输入gCi)
注释 括号 () 中的代码。
- 大小写切换
~
~
将光标所在位置字母大小写状态翻转3~
将光标所在位置(光标处为第一个)开始的 3 个字母大小写状态翻转g~~
改变当前行大小写状态gUU
/guu
将当前行字母改成大/小写gUiw
guiw
g~iw
VS Code vim 插件
关闭 VS Code 的按键重复功能
ApplePressAndHoldEnabled
按键重复功能 解释
ApplePressAndHoldEnabled
是一个 macOS 的系统参数,其默认值为 true。它用于控制按住某个按键时相应字符的输入方式。当其值为 true 时,用户按住某个键不放,会弹出一个特殊的菜单,用户可以通过选择相应的字符来输入,这个菜单称为 Press and Hold 菜单。当其值为 false 时,按键只会输入相应字符的一个副本,这种方式比 Press and Hold 更加迅速和高效。如果您想禁用 Press and Hold 功能,可以通过将其值设置为 false 来实现。一般安装的都是 VS Code 普通版本,在终端中执行下述代码。(如果是其他版本,可以在 vim 插件中 Installation 节查看需要输入代码)
然后退出登录
打开 setings.json
打开 Command Palette,以
user set json
为关键词搜索,回车(或者用 ⌘ ,
进入设置 UI 界面,点右上角图标进入 setings.json
)Vim 插件安装页面有实例代码,拷贝进
setings.json
中快捷键
gt
gT
tab 切换(对 插件 这样的非编辑器 tab 不适用,即进入这样的 tab 后该 vim 快捷键失效,使用⌃ 数字
)
easymotion:高亮目标字符,并给一个快捷键位跳转
<leader><leader> s <char>
高亮所有 <char>,并给一个快捷键位跳转。s 换成 f/F 是只向下/上搜索
<leader><leader> t <char>
高亮光标下方所有 <char> 之前的字符,例如搜括号。t 换成 T 是光标上方
<leader><leader> j <char>
高亮光标下方行开头。j 换成 k 是上方
<leader><leader> / <char>... <CR>
全文范围内高亮多个字符,回车后给出快捷键跳转
surround:
y s <motion> <desired>
:test
with cursor inside quotes typeysiw(
to end up with( test )
(如果 输入ysiw)
就没有中间的空格)
d s <existing>
:"test"
with cursor inside quotes typeds"
to end up withtest
c s <existing> <desired>
:"test"
with cursor inside quotes typecs"t
and enter123>
to end up with<123>test</123>
(t 表示 tag)
多光标
⌘ D
选择当前光标所在的单词,并将其添加到下一个匹配的相同单词中。这个快捷键也被称为“多重选择(Multi-Cursor)”功能。它允许用户同时编辑多个相同的单词或代码块,可以节省大量时间和精力。 按下多次⌘ D
才能让下一个匹配单词被选中
gb
- 用来修改 html 中的tag很方便