VSCode 光标变方块是因启用了 Vim 插件的 Normal 模式,方块对应 Normal、竖线对应 Insert;可通过禁用插件、设置 "vim.cursorStylePerMode": false 或卸载插件并配置 "editor.cursorStyle": "line" 恢复竖线光标。

VSCode 光标变成方块:这是 Vim 插件在起作用
VSCode 本身默认光标是竖线(|),出现方块光标(█)几乎可以确定是安装了 vim 插件(如 Vim by vscodevim)并启用了模拟 Vim 的模式切换。方块光标对应 Vim 的 Normal 模式,而竖线光标对应 Insert 模式。
关闭 Vim 模拟或禁用光标形状切换
如果你不需要 Vim 键绑定,最直接的解决方式是停用或卸载 vim 插件。如果仍需部分 Vim 功能,可通过配置禁用光标形状变化:
- 打开 VSCode 设置(
Ctrl+,或Cmd+,) - 搜索
vim.cursorStylePerMode - 取消勾选该项,或在
settings.json中添加:
"vim.cursorStylePerMode": false
该设置会强制所有模式使用统一光标形状(默认为竖线)。注意:它不会禁用 Vim 模式切换逻辑,只是隐藏视觉提示。
手动切回插入模式但光标没变?检查当前模式状态
即使你按了 i、a 等键进入插入模式,光标仍为方块,常见原因有:
-
vim.useSystemClipboard或其他插件冲突导致模式状态未正确同步 - 焦点不在编辑器主体(比如光标在搜索框、终端或侧边栏)
- 按下了
Ctrl+Shift+P后误触发了命令面板的 Vim 模式残留 - 快捷键被系统级工具(如输入法、窗口管理器)劫持,
Esc无法正常退出 Normal 模式
快速确认当前模式:看 VSCode 窗口右下角状态栏——若显示 -- NORMAL -- 或 -- INSERT --,说明 Vim 插件正在工作;若无此提示,可能是插件已禁用但缓存未清,可尝试重启 VSCode。
彻底恢复默认光标:不依赖 Vim 插件的方案
如果只是想让光标永远是竖线,且不关心 Vim 行为,推荐以下组合配置:
- 卸载
Vim插件(或禁用) - 确保
editor.cursorStyle设为line(不是block或underline) - 检查是否启用了
editor.smoothScrolling—— 它不影响形状,但偶发与光标渲染冲突
在 settings.json 中显式声明:
"editor.cursorStyle": "line"
注意:editor.cursorStyle 是 VSCode 原生命令,不受插件控制;但一旦装了 Vim 插件,它会优先接管该设置——所以必须先处理插件层逻辑,再调原生设置才生效。










