<p>按 Insert 键可立即切换回竖线光标;90% 是触发了覆盖模式(editor.overtype=true),再按一次 Insert 即恢复插入模式;状态栏显示 OVR 表示覆盖模式,-- NORMAL -- 或 vim 表示 Vim 插件的 Normal 模式,二者解决方式不同。</p>

按 Insert 键就能立刻切回竖线光标
VSCode 光标变成粗方块(█),90% 是你无意中按了 Insert 键,触发了原生的覆盖模式(editor.overtype 设为 true)。这不是插件冲突、不是配置损坏,更不用重启——再按一次 Insert 键,光标立刻变回竖线 |,输入行为也同步恢复为插入模式。
验证是否生效:在已有文本中(比如 abc)把光标放在 a 和 b 之间,输入 x ——
- 变成
axbc→ 已切回插入模式 ✅ - 变成
axc→ 还在覆盖模式 ❌,再按一次Insert
Mac 用户注意:Insert 键通常不存在,可用 Fn+Enter 或 Fn+Return 替代(依键盘型号而定);远程开发(SSH / Dev Container)中,终端可能劫持该键信号,此时需检查终端层配置。
状态栏显示 OVR 还是 -- NORMAL --?这是两个独立问题
右下角状态栏是关键判断依据:
如果显示 OVR → 纯粹是 VSCode 原生覆盖模式,按 Insert 即可解决;
如果显示 -- NORMAL -- 或 vim → 是 vscodevim 等 Vim 插件在工作,方块光标是 Normal 模式的主动渲染,和覆盖模式无关。此时按 Esc 可退出 Normal 模式,但光标未必立刻变细——因为焦点可能不在编辑器主体(比如停在搜索框、终端或侧边栏)。
常见误判点:
- 按了
i还是方块光标?先确认焦点是否在代码编辑区(点击一下编辑区空白处) - 状态栏既没
OVR也没-- NORMAL --?说明 Vim 插件可能已禁用但缓存未清,可尝试重启 VSCode
想永久禁用方块光标?别改 Vim 插件逻辑,只调光标样式
如果你装了 Vim 插件但不想看到方块光标,又不想放弃 Vim 键绑定,就不要卸载插件或关功能,而是关掉它的光标样式切换:
在 settings.json 中加这一行:
"vim.cursorStylePerMode": false
它会让所有 Vim 模式(Normal / Insert / Visual)统一使用竖线光标,但 Vim 的模式切换、按键逻辑完全不受影响。
其他方案对比:
-
"editor.cursorStyle": "line"单独设这个没用——只要editor.overtype为true,光标强制 block - 禁用 Vim 插件确实能一劳永逸,但会丢失所有 Vim 操作习惯
- 设
"editor.overtypeMode": false并不能阻止Insert键触发,只是默认关闭该模式
快捷键失效时,优先排查键盘和焦点状态
按 Insert 或 Esc 没反应,大概率不是 VSCode 本身的问题:
外接机械键盘或某些笔记本固件异常时,Insert 键信号可能被丢弃或误映射;输入法(如搜狗、RIME)在中文模式下有时会把 Insert 当作中英文切换键,导致 VSCode 收不到原始事件。
快速排查步骤:
- 换一个物理键盘试试(排除硬件/固件问题)
- 临时切换系统输入法为英文(避免输入法劫持)
- 按
Ctrl+Shift+P打开命令面板,输入Vim: Toggle Vim Mode,看能否手动关闭 Vim 模式 - 检查焦点:按
Ctrl+1(Windows/Linux)或Cmd+1(Mac)确保焦点回到编辑器主区域
真正麻烦的不是光标形状本身,而是你不知道当前到底是覆盖模式、Vim Normal 模式,还是焦点丢失——三者表现相似,但解决路径完全不同。状态栏那几个小字,比任何配置都可靠。


















