光标不闪烁是因 settings.json 中 "editor.cursorblinking" 被设为 "off" 或 "solid";闪烁模式有 "blink"(默认)、"smooth"、"phase"、"expand";光标形状由 "editor.cursorstyle" 控制,如 "line"、"block" 等;颜色需通过 "workbench.colorcustomizations" 的 "editorcursor.foreground" 设置;macos 上光标模糊可关闭 "editor.cursorsmoothcaretanimation"。

光标不闪烁?先确认 settings.json 里没禁用 editor.cursorBlinking
VSCode 默认开启光标闪烁,但很多人改配置时误设成 "editor.cursorBlinking": "off",结果怎么调样式都没反应。这不是主题或插件问题,是底层开关被关了。
检查方法:打开命令面板(Ctrl+Shift+P),输入 Preferences: Open Settings (JSON),搜 cursorBlinking。如果值是 "off" 或 "solid",闪烁就会消失——后者虽然显示为实心光标,但其实也不闪。
-
"blink":标准闪烁(默认) -
"smooth":淡入淡出式闪烁(需 VSCode 1.85+) -
"phase":从左到右扫描式渐隐(视觉上像“扫过”) -
"expand":从小点向两端展开再收缩 -
"solid":完全不闪烁,常被误当成“设置生效”,其实是关闭了动画
想改光标形状?editor.cursorStyle 才是关键字段
光标形状和闪烁是两个独立控制项:cursorBlinking 管闪不闪,cursorStyle 管长什么样。常见误区是以为换主题就能改形状,其实主题只影响颜色,不改形态。
可选值只有 6 种,不是所有都兼容旧版本:
-
"line":竖线(默认,Windows/macOS 常见) -
"block":方块(类似 Vim 的 normal 模式) -
"underline":下划线(适合高对比度场景) -
"line-thin":细竖线(比"line"更窄,1px 宽) -
"block-outline":空心方块(VSCode 1.79+) -
"underline-thin":细下划线(VSCode 1.80+)
示例:同时设形状和闪烁效果
"editor.cursorStyle": "block", "editor.cursorBlinking": "smooth"
自定义光标颜色?别动 theme,直接写 workbench.colorCustomizations
主题色经常覆盖光标颜色,尤其用深色主题时,光标可能变成浅灰、几乎看不见。这时候改主题文件或等更新没用,得在用户设置里硬覆盖。
workbench.colorCustomizations 是唯一能稳定干预光标颜色的入口,它优先级高于主题。注意字段名是 editorCursor.foreground,不是 cursor 或 caret。
- 值必须是十六进制(如
"#ff4d4d")、RGB("rgb(255, 77, 77)")或支持透明度的 RGBA("rgba(255, 77, 77, 0.9)") - 不支持 CSS 变量或主题 token 名(如
editorForeground) - 如果用了多根目录工作区,该设置要放在「用户设置」而非「工作区设置」,否则可能失效
示例:
"workbench.colorCustomizations": {
"editorCursor.foreground": "#00c853"
}
Mac 上光标变粗、模糊?关掉 editor.cursorSmoothCaretAnimation
macOS + Retina 屏组合下,开启平滑光标动画(editor.cursorSmoothCaretAnimation)有时会导致光标渲染异常:边缘发虚、宽度突增、甚至文字错位。这不是 bug,是 Core Animation 在 subpixel 渲染上的副作用。
这个选项默认关闭,但部分插件(比如某些 Vim 模拟插件)会悄悄启用它。一旦发现光标“看起来胖了一圈”或“打字时有拖影”,优先检查此项:
- 值为
true时:光标移动/切换行会有缓动过渡,但 macOS 上易糊 - 值为
false(推荐):瞬时跳转,清晰锐利,兼容性更好 - 不影响
cursorBlinking动画,只是禁用位置切换的过渡
顺手加一句:如果你用的是外接 4K 显示器且缩放设为 150%,这个选项更大概率触发渲染异常。











