Sublime Text光标样式完全由原生引擎控制,与主题无关;唯一真正禁闪的方式是设"caret_style":"solid"并同时将"caret_extra_top"、"caret_extra_bottom"、"caret_extra_width"均设为0。

“主题光标”是误解,Sublime 的光标样式不走主题渲染路径
Sublime Text 的光标(caret)完全由编辑器原生渲染引擎控制,和主题(.sublime-color-scheme 或 .tmTheme)无关。所谓“主题光标”并不存在——你改了主题文件里的任何字段,都不会影响 caret_style、caret_blinking 或光标尺寸参数。所有有效配置必须写在 Preferences → Settings – User 的 JSON 里,左侧默认设置或主题文件里加这些字段,一律无效。
真正能改的只有 caret_style + 三项 extra 参数组合
Sublime 原生支持的 caret_style 取值中,只有 "solid" 是彻底跳过动画帧、不依赖系统闪烁定时器的静态模式。但它要真正“不闪”,必须同时满足:
"caret_style": "solid""caret_extra_top": 0"caret_extra_bottom": 0"caret_extra_width": 0
漏掉任意一个,在高 DPI 屏、远程桌面或某些 UI 主题(如 Material Theme)下都可能触发微动,表现为“伪闪烁”——看着像停了,实际是极短周期的透明度/位置抖动。
为什么 caret_blinking: false 和 blink_interval: 0 都靠不住
"caret_blinking": false 在 ST4.4+(build 4143+)中已基本失效:系统级光标设置(macOS 的 IBInsertionPointBlinkPeriod、Windows 辅助功能里的“光标闪烁速率”、Linux 的 xset bc)优先级更高,Sublime 默认继承而非覆盖。而 "blink_interval": 0 只对已弃用的 "caret_style": "blink" 模式起作用,该模式多数主题下会被自动降级为 "phase",结果就是设了也白设。
wide_caret 和 caret_style 冲突时会强制退化回竖线
如果你启用了 "wide_caret": true,哪怕 "caret_style": "solid" 已设,Sublime 也会强制退化回竖线光标,并恢复闪烁——这是硬编码行为,不是 bug。所以:
- 想用实心块且禁闪:关掉
"wide_caret"(删掉或设为false) - 想加粗但保持竖线:用
"caret_style": "wide"或"smooth",再配"caret_extra_width": 2 - 别混用
"wide_caret": true和"caret_style": "wide",二者功能重叠,易导致光标偏移或粗细异常
最终效果是否生效,第一反应不是重开 Sublime,而是检查系统辅助功能设置——90% 的“改了没反应”问题,根源都在那儿。


















