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
相关产品推荐
相关产品推荐

