vscode光标变方块90%是误触insert键,再按一次即可恢复竖线光标;若装有vim插件,则方块光标表示normal模式,右下角会显示-- normal --提示。

VSCode 光标变成方块,90% 是按到了 Insert 键,不是插件问题、不是配置损坏、不用重启——再按一次 Insert 就立刻恢复。
按 Insert 键触发了覆盖模式(editor.overtype)
VSCode 原生支持插入/覆盖双模式,Insert 键是唯一快捷切换开关。启用后:editor.overtype 设为 true,光标渲染为 block 形态(█),输入时直接替换光标后字符,而非插入。
- 验证方法:在已有文本中(如
abc)把光标放在a和b之间,输入x—— 若变成axc,说明仍在覆盖模式;若变成axbc,说明已切回插入模式 - Mac 用户注意:
Insert键通常不存在,需用Fn + Enter或Fn + Return模拟(具体依键盘型号而定) - 远程开发(SSH / Dev Container)场景下,终端层可能劫持
Insert键信号,导致 VSCode 收不到切换事件,此时需检查终端配置或改用本地连接测试
Vim 插件启用后 Normal 模式显示方块光标
装了 vscodevim 等 Vim 插件后,光标形状会随模式自动变化:-- NORMAL -- 显示 block,-- INSERT -- 显示 line。这不是 bug,是设计行为。
- 快速确认当前模式:看 VSCode 窗口右下角状态栏是否有
-- NORMAL --或-- INSERT --提示 - 临时退出:按
Esc切回 Normal,按i或a进入 Insert;若按了i光标仍为方块,说明焦点不在编辑器主体(比如停在搜索框、终端或侧边栏) - 禁用光标形状切换:在
settings.json中添加"vim.cursorStylePerMode": false,所有模式统一用竖线光标(但 Vim 模式逻辑照常运行)
为什么改了 editor.cursorStyle 没生效?
editor.cursorStyle 控制原生光标样式,可设为 line、block、underline 等,但它会被更高优先级机制覆盖。
- 插件接管优先级高于原生设置:只要
vscodevim启用且vim.cursorStylePerMode为true,它就会忽略editor.cursorStyle - 工作区配置会覆盖用户配置:检查 VSCode 左下角是否显示「工作区」,对应
.vscode/settings.json可能有冲突项 - 终端光标独立控制:集成终端的光标由
terminal.integrated.cursorStyle决定,和编辑器无关,别在 Terminal 里验证编辑器设置
真正容易被忽略的是:Insert 键误触发现象在笔记本上高频发生(常集成在 Fn+0、Fn+Backspace 等组合键),而 Vim 插件的模式状态又不总在状态栏稳定显示——这两者叠加,会让用户反复怀疑是不是配置坏了。先按一次 Insert,再看右下角提示,比翻 settings.json 快得多。











