10 个 VS Code Vim 技巧助您提高工作效率

2025-06-04

10 个 VS Code Vim 技巧助您提高工作效率

学习 Vim 是任何有抱负的软件工程师提高工作效率的最佳方法之一。过去几年,我一直在使用 Visual Studio Code 中的 VSCodeVim扩展,这个“VS Code × Vim”组合极大地提高了我的编码速度。

在本文中,我将分享十个 VS Code Vim 技巧,以进一步提高您的工作效率,让您能够以闪电般的速度编写代码⚡。

先决条件

  • 你已经安装了VSCodeVim 扩展
  • 您对 Vim 键绑定有基本的了解(例如,您应该知道5j,yy的含义)

目录

(完整设置:settings.json| keybindings.json


导航

#1 - 智能亲属线

这个很酷的功能仅在插入模式下显示绝对行号,否则显示相对行号。

在下面的演示中,请注意左侧的行号边栏在插入模式下显示绝对数字👇

(💡 如果 GIF 没有播放,请点击它)

智能相对线

要启用它,请settings.json按“Ctrl+Shift+P”打开并搜索“首选项:打开用户设置(JSON)”。然后,添加以下项目:



{
  "vim.smartRelativeLine": true
}


Enter fullscreen mode Exit fullscreen mode

#2 - 光标周围的行

当滚动浏览一个大文件时,光标可能会位于屏幕的最顶部/最底部,这可能会很烦人,因此您不确定光标之前/之后有哪些行。

“编辑器:光标周围行数”设置光标上方和下方保留的最小行数。例如,将其设置为8表示光标上方始终保留 ≥8 行,光标下方始终保留 ≥8 行。在 Vim 中,也称为scrolloff

将以下项目添加到settings.json



{
  "editor.cursorSurroundingLines": 8
}


Enter fullscreen mode Exit fullscreen mode

#3 - 单词分隔符

如果您经常使用 CSS 类名(例如Tailwind CSS),您可能会发现 Vim 将kebab-case类名分解为多个单词很烦人。

例如,我需要按5 次e“跳到单词末尾”才能选中这个单词,因为编辑器会把这个符号当作单词分隔符。虽然我当然可以用“跳到单词末尾,忽略标点符号”来做同样的事情,但我喜欢用快捷键来跳到下一个单词(别评判我😥),而且我想要一个更快捷的方法来实现这一点。border-red-600-Ee

(💡 再次强调,如果 GIF 没有播放,请点击它)

导航 CSS 类 - 之前

“编辑器:单词分隔符”设置控制使用哪些字符作为单词分隔符,-默认情况下使用 字符。settings.json如果我在 中删除该-字符:

从单词分隔符中删除 -

然后,编辑器将其视为border-red-100一个单词,我只需按e一次即可选择它!

导航 CSS 类 - 之后

🔼 目录


按键绑定

#4 - 无需箭头键即可浏览菜单

VSCodeVim 扩展有几个内置的键绑定,让您无需使用箭头键即可导航不同的菜单和列表。

如果您处于自动完成菜单中:

  • Ctrl + J - 移至下一个项目
  • Ctrl + P - 移动到上一个项目

无需箭头键的自动完成菜单

<C-j>组合<C-p>在“转到文件”菜单(即“Ctrl + P”菜单)中也有效:

无需箭头键即可转到文件菜单

如果您将文件资源管理器窗口置于焦点位置(例如,通过单击文件资源管理器窗口),则可以通过以下方式导航项目:

  • jk- 向下和向上移动
  • h- 移动到父文件夹
  • o- 打开文件或文件夹

文件资源管理器键绑定

我们很快会在技巧 #7中研究更多自定义文件资源管理器键绑定

#5 - LSP 键绑定

LSP(语言服务器协议)键绑定利用语言服务器让您快速浏览代码,例如跳转到变量/函数定义并找到其用法。

我所有的 LSP 快捷键都以g(表示“ g o”)开头,后跟操作的首字母。有些以 开头gp,表示“ g o p eek”。

(图例:🔥 = 最常用)

  • gd- 转到D定义 (🔥)
  • gpd- P eek定义
  • gh- 显示H over (🔥)
  • gi- 转到实现(🔥)
  • gpi- P eek实现
  • gq-快速修复(打开代码操作灯泡菜单)
  • gr- 转到R参考文献 (🔥)
  • gt- 转到类型定义(🔥)
  • gpt- Peek类型定义

settings.json它们可以在以下位置设置vim.normalModeKeyBindings



{
  "vim.normalModeKeyBindings": [
    {
      "before": ["g", "p", "d"],
      "commands": ["editor.action.peekDefinition"]
    },
    {
      "before": ["g", "h"],
      "commands": ["editor.action.showDefinitionPreviewHover"]
    },
    {
      "before": ["g", "i"],
      "commands": ["editor.action.goToImplementation"]
    },
    {
      "before": ["g", "p", "i"],
      "commands": ["editor.action.peekImplementation"]
    },
    {
      "before": ["g", "q"],
      "commands": ["editor.action.quickFix"]
    },
    {
      "before": ["g", "r"],
      "commands": ["editor.action.referenceSearch.trigger"]
    },
    {
      "before": ["g", "t"],
      "commands": ["editor.action.goToTypeDefinition"]
    },
    {
      "before": ["g", "p", "t"],
      "commands": ["editor.action.peekTypeDefinition"]
    }
  ]
}


Enter fullscreen mode Exit fullscreen mode

(注意:(gd转到定义)键绑定是内置的,因此无需在上面重新指定。)

#6 - 滚动显示悬停

从 VS Code v1.77开始,可以使用键盘快捷键在悬停窗口(通过 打开)滚动。通过一些技巧,我们可以使用键在悬停窗口中滚动。ghhjkl

滚动显示悬停

确保我们已经重新映射ghsettings.json这应该已经在技巧 #5完成):



{
  "vim.normalModeKeyBindings": [
    // ...
    {
      "before": ["g", "h"],
      "commands": ["editor.action.showDefinitionPreviewHover"]
    }
  ]
}


Enter fullscreen mode Exit fullscreen mode

接下来keybindings.json通过“Ctrl + Shift + P”→“偏好设置:打开键盘快捷键(JSON)”打开,并附加以下项目:



[
  {
    "key": "h",
    "command": "editor.action.scrollLeftHover",
    "when": "editorHoverFocused"
  },
  {
    "key": "j",
    "command": "editor.action.scrollDownHover",
    "when": "editorHoverFocused"
  },
  {
    "key": "k",
    "command": "editor.action.scrollUpHover",
    "when": "editorHoverFocused"
  },
  {
    "key": "l",
    "command": "editor.action.scrollRightHover",
    "when": "editorHoverFocused"
  }
]


Enter fullscreen mode Exit fullscreen mode

感谢 EdRW 提供此 hack)

#7 - 文件资源管理器键绑定

虽然 VSCodeVim 扩展附带了几个内置的文件资源管理器键绑定(如技巧 4 所示),但我们可以添加自定义键绑定来丰富体验:

  • <leader>e- 切换(并聚焦)文件资源管理器视图
    • 💡<leader>代表Leader Key,通常用作用户自定义快捷键的前缀。默认情况下,它是反斜杠键 ( \),但我们通常将其映射到空格键(参见vim.leader下方选项)。
  • 在文件资源管理器中:
    • a- 新文件
    • f- 新建文件夹
    • r- 重命名项目
    • x- 切割物品
    • y- 复制项目
    • p- 粘贴项目

要设置自定义键绑定:

  1. 打开settings.json并添加<leader>e键绑定以打开文件资源管理器:


   {
     "vim.leader": "<space>",
     "vim.normalModeKeyBindings": [
       // ...
       {
         "before": ["<leader>", "e"],
         "commands": ["workbench.view.explorer"]
       }
     ]
   }


Enter fullscreen mode Exit fullscreen mode
  1. 通过“Ctrl + Shift + P”→“偏好设置:打开键盘快捷键(JSON)”打开keybindings.json,并附加以下项目:


   [
     {
       "key": "space e",
       "command": "workbench.action.toggleSidebarVisibility",
       "when": "filesExplorerFocus && !inputFocus"
     },
     {
       "key": "a",
       "command": "explorer.newFile",
       "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
     },
     {
       "key": "f",
       "command": "explorer.newFolder",
       "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
     },
     {
       "key": "r",
       "command": "renameFile",
       "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
     },
     {
       "key": "x",
       "command": "filesExplorer.cut",
       "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
     },
     {
       "key": "y",
       "command": "filesExplorer.copy",
       "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !inputFocus"
     },
     {
       "key": "p",
       "command": "filesExplorer.paste",
       "when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceReadonly && !inputFocus"
     }
   ]


Enter fullscreen mode Exit fullscreen mode

第一项可以<leader>e在文件资源管理器获得焦点时关闭它,其余项是用于操作项目的键绑定。

演示:

  • 使用以下方式打开文件资源管理器<leader>e→ 使用以下方式新建文件夹f→ 使用以下方式新建文件a 文件资源管理器演示 1
  • 使用以下方式打开文件资源管理器<leader>e→ 使用以下方式剪切文件x→ 使用以下方式粘贴文件p 文件资源管理器演示 2

感谢 v-iashin提供此 hack)

#8 - 将 Caps Lock 映射到 Esc

虽然 Esc 键对于 Vim 来说非常重要,但我讨厌所有键盘都把它放在左上角,这让你的手在主行时很难够到它。我强烈建议将Caps Lock键重新映射到Esc 键,因为 Caps Lock 键很少使用,而且很容易用小指按到。

将 Caps Lock 重新映射到 Esc 键也消除了插入模式下常见的按键绑定,即jj按 或jk退出插入模式。这样,当您在插入模式下输入时,编辑器就不会再尴尬地暂停,j等待您完成jj按键绑定了。

执行重新映射需要第三方实用程序:

🔼 目录


猛拉

#9 - 突出显示被复制的文本

你可以在提取文本时启用高亮功能,这是一个很好的视觉提示,可以显示你提取了哪些文本。除了高亮时长外,你还可以设置与配色方案匹配的高亮颜色。例如,我使用了绿色的高亮颜色:

高亮选中的文本演示

settings.json



{
  "vim.highlightedyank.enable": true,
  "vim.highlightedyank.color": "#a9dc7660",
  "vim.highlightedyank.duration": 250
}


Enter fullscreen mode Exit fullscreen mode

#10 - 拉至系统剪贴板

您可以使用系统剪贴板寄存器 ( *) 作为默认寄存器。换句话说,诸如yy或 之类的键绑定dd会将文本提取到系统剪贴板。在 中settings.json



{
  "vim.useSystemClipboard": true
}


Enter fullscreen mode Exit fullscreen mode

🔼 目录


最后,同样重要的是,我强烈建议你查看VSCodeVim 扩展的README 文件。你肯定会学到一些本文未涉及的新知识 😁。

完整的设置代码如下:

感谢阅读!如果你也有一些 VS Code Vim 的小技巧,欢迎在评论区分享🙌。

文章来源:https://dev.to/ansonh/10-vs-code-vim-tricks-to-boost-your-productivity-1b0n
PREV
CSS 网格简化!AWS GenAI 上线!
NEXT
为了避免被追踪,请在多元宇宙中浏览 发现是如何开始的 树形标签,我最喜欢的附加组件 简介:容器标签 来吧 多账户容器 最后一步:每个域的一次性临时容器 没有开销:临时容器会自动删除 结论