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

VSCode环境下,能否从Vim选择模式切换至保持选中状态的INSERT模式?

嘿,这个问题我之前也碰到过!答案是肯定的——不仅能切换到INSERT模式还保持文本选中,甚至还能直接解决你按<键不包裹的问题,给你两种方案选:

方案1:直接在Vim视觉模式下实现包裹(更高效)

既然你的核心需求是给选中内容加<>,其实不用切换到INSERT模式,直接给Vim视觉模式的<键加个映射就行,一步到位。

打开VSCode的设置(快捷键Ctrl+,),点击右上角的{}图标打开settings.json,添加以下配置:

"vim.visualModeKeyBindingsNonRecursive": [
  {
    "before": ["<"],
    "commands": [
      "editor.action.insertSnippet",
      {
        "args": {
          "snippet": "<${TM_SELECTED_TEXT}>"
        }
      }
    ]
  }
]

保存后,在Vim视觉模式选中文本按<,就会自动给内容包裹<>,和原生选中的效果一模一样。

方案2:切换到INSERT模式仍保持选中

如果你确实需要切换到INSERT模式后还保留选区(比如还要做其他编辑操作),可以给视觉模式下的切换键(比如i)加映射,让VSCode识别Vim的选区:

同样在settings.json里添加:

"vim.visualModeKeyBindingsNonRecursive": [
  {
    "before": ["i"],
    "commands": [
      "vim.exitVisualMode",
      "editor.action.smartSelect.expand",
      "workbench.action.editor.insertMode"
    ]
  }
]

现在你在Vim视觉模式选中文本后按i,就会切换到INSERT模式,而且文本依然处于选中状态,这时候按<键,VSCode的原生包裹功能就会生效了。

原理其实很简单:Vim的视觉选区和VSCode原生选区是两套机制,默认切换模式时Vim会清空自己的选区,但VSCode不会识别它的选区。上面的配置就是把Vim的选区同步给VSCode,这样切换到INSERT模式后选区就能保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:34:06