You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode Vim插件配置:插入模式用默认VSCode操作,保留Esc切正常模式

问题描述

我喜欢Vim普通模式的快捷键,但更偏好VSCode默认的快捷键,比如多光标相关操作(像Ctrl+D选中下一处匹配项、Ctrl+F2选中所有匹配项)。现在用这些快捷键时,就算已经关闭了vim.mouseSelectionGoesIntoVisualMode,还是会自动进入Visual模式。

简单说,我想要插入模式下完全禁用Vim插件的功能(就像没装这个插件一样),但保留按Esc键切换到Vim普通模式的能力。


当前设置/偏好

User/settings.json

"vim.useCtrlKeys": false, // 对我无效,已移除部分Ctrl键绑定
"vim.startInInsertMode": true,
"vim.mouseSelectionGoesIntoVisualMode": false,
"vim.smartRelativeLine": true,
"vim.useSystemClipboard": true,

User/keybindings.json

(命令前的减号表示已禁用)

{
    "key": "shift+alt+down",
    "command": "-extension.vim_cmd+alt+down",
    "when": "editorTextFocus && vim.active && !inDebugRepl"
},
{
    "key": "shift+alt+up",
    "command": "-extension.vim_cmd+alt+up",
    "when": "editorTextFocus && vim.active && !inDebugRepl"
},
{
    "key": "ctrl+d",
    "command": "-extension.vim_ctrl+d",
    "when": "editorTextFocus && vim.active && vim.use<C-d> && !inDebugRepl"
}

操作系统

Windows 11


解决方案

1. 调整settings.json配置

在settings.json中添加或修改以下选项,彻底让插入模式下的快捷键归VSCode原生控制:

// 清空插入模式下的Vim自定义绑定
"vim.insertModeKeyBindingsNonRecursive": [],
// 禁用Vim对插入模式下所有Ctrl类快捷键的拦截
"vim.handleKeys": {
    "<C-a>": false,
    "<C-c>": false,
    "<C-d>": false,
    "<C-e>": false,
    "<C-f>": false,
    "<C-h>": false,
    "<C-i>": false,
    "<C-j>": false,
    "<C-k>": false,
    "<C-l>": false,
    "<C-n>": false,
    "<C-o>": false,
    "<C-p>": false,
    "<C-r>": false,
    "<C-s>": false,
    "<C-t>": false,
    "<C-u>": false,
    "<C-v>": false,
    "<C-w>": false,
    "<C-x>": false,
    "<C-y>": false,
    "<C-z>": false,
    // 若有其他需要保留原生行为的快捷键,可在此继续添加
},
// 仅保留普通/可视模式下的Vim快捷键功能
"vim.useNormalModeKeyBindings": true,
"vim.useVisualModeKeyBindings": true,

2. 完善keybindings.json规则

针对插入模式单独禁用Vim的命令绑定,确保原生快捷键完全生效:

// 禁用Vim在插入模式下的Ctrl+D绑定
{
    "key": "ctrl+d",
    "command": "-extension.vim_ctrl+d",
    "when": "editorTextFocus && vim.active && vim.mode == 'insert' && !inDebugRepl"
},
// 禁用Vim在插入模式下的Ctrl+F2绑定
{
    "key": "ctrl+f2",
    "command": "-extension.vim_ctrl+f2",
    "when": "editorTextFocus && vim.active && vim.mode == 'insert' && !inDebugRepl"
},
// 其他需要禁用的Vim插入模式快捷键,可按此格式添加

3. 验证效果

保存所有设置后重启VSCode:

  • 插入模式下使用Ctrl+D、Ctrl+F2等快捷键,会触发VSCode原生多光标功能,不会进入Visual模式
  • 按下Esc可正常切换到Vim普通模式,使用Vim的快捷键操作

内容的提问来源于stack exchange,提问作者SteveyMcSteve 07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:35:25