VS Code vim 操作指南

type
Post
status
Published
date
Jun 24, 2023
slug
vscode-vim
summary
tags
VS Code
vim
Linux
工具
开发
icon
 
首先在 VS Code 中安装 vim 插件

默认操作

  • ⌘ b 左侧侧边栏展示/隐藏
  • ⌘ 0 光标聚焦到左侧侧边栏。默认是文件浏览器,使用 j/k 可以在目录树中选中文件或目录, ol 打开目录或文件, 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 , d3wd空格dl 删除光标所在字符( x), d数字j 删掉本行及下几行。 D 从当前光标(含)删至行尾
  • 更改: cc 改一行, c3j 改当前行及下几行, c数字wc数字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 是只向下/上搜索
notion image
<leader><leader> t <char> 高亮光标下方所有 <char> 之前的字符,例如搜括号。t 换成 T 是光标上方
notion image
<leader><leader> j <char> 高亮光标下方行开头。j 换成 k 是上方
notion image
<leader><leader> / <char>... <CR> 全文范围内高亮多个字符,回车后给出快捷键跳转
 

surround:

  • y s <motion> <desired>test with cursor inside quotes type ysiw( to end up with ( test ) (如果 输入 ysiw) 就没有中间的空格)
  • d s <existing>"test" with cursor inside quotes type ds" to end up with test
  • c s <existing> <desired> : "test" with cursor inside quotes type cs"t and enter 123> to end up with <123>test</123> (t 表示 tag)

多光标

  • ⌘ D 选择当前光标所在的单词,并将其添加到下一个匹配的相同单词中。这个快捷键也被称为“多重选择(Multi-Cursor)”功能。它允许用户同时编辑多个相同的单词或代码块,可以节省大量时间和精力。 按下多次⌘ D才能让下一个匹配单词被选中
  • gb
  • 用来修改 html 中的tag很方便

© insv 2021 - 2023