唯一真正停闪的原生方式是设"caret_style":"solid"并同时将"caret_extra_top"、"caret_extra_bottom"、"caret_extra_width"均设为0,缺一不可,保存即生效。

Sublime Text 的光标样式和闪烁行为不能靠图形界面开关,必须改 Preferences.sublime-settings 用户配置;设 "caret_style": "solid" 是唯一真正停闪的原生方式,其他所谓“关闪烁”参数(如 caret_blinking、blink_interval)在 ST4.4+ 中基本失效或被忽略。
怎么让光标彻底不闪烁(ST4.4+ 稳定方案)
“不闪烁”的本质是跳过所有动画绘制路径,只有 "caret_style": "solid" 能做到。但单写这一项不够——残留的 caret_extra_* 值会在高 DPI 或某些主题下触发微动,看起来像伪闪烁。
- 必须同时设三项为
0:"caret_extra_top": 0、"caret_extra_bottom": 0、"caret_extra_width": 0 -
"caret_blinking": false和"animation_enabled": false不是必需项,加了也无害,但不解决根本问题 - 如果还开着
"wide_caret": true,会强制退化回竖线并恢复闪烁,哪怕caret_style是"solid" - 改完保存即生效,无需重启
为什么 blink_interval 设成 0 还在闪
blink_interval 只在 ST4 build 4143+ 以上版本部分生效,且仅对 "caret_style": "blink"(已弃用)起作用;多数情况下它被系统级光标设置覆盖,尤其在 macOS 上完全无效。
- Windows/macOS/Linux 的光标闪烁节奏由系统可访问性设置统一控制,Sublime 默认继承
- 设
"blink_interval": 0并不会禁用闪烁,必须配"caret_blinking": false才可能生效(但依然不如"solid"可靠) - 在远程桌面或高缩放场景下,
blink_interval容易因帧率不同步导致跳帧,反而更干扰
哪些 caret_style 值真能禁闪,哪些只是“看起来不闪”
每个值对应不同渲染分支,不是名字说了算。“不闪”只取决于是否绕过定时器和透明度计算。
-
"solid":唯一真正静态模式,纯色矩形直出,不参与任何帧动画 -
"phase"和"smooth":仍有透明度渐变或淡入淡出,属于“弱动画”,不算真正禁闪 -
"block":原生仍走闪烁逻辑,除非额外关掉系统光标(比如 Windows 的cursor-blink设置) -
"wide"和"underline":都支持闪烁,且caret_extra_width对它们无效 -
"hidden"虽能生效,但极易误操作,不推荐
插件或主题导致设置失效怎么办
BlockCursor、Vintageous、FocusMode 等插件会动态接管光标渲染,优先级高于用户配置。主题(如 Material Theme)也可能在 UI 文件中硬编码 caret_style。
- 先临时禁用所有插件,看是否恢复正常;若恢复,再逐个启用排查
- 切换回默认主题(
Default.sublime-theme),验证是否主题覆盖 - 检查主题文件里是否有
"caret_style"或"caret"相关定义(路径类似Packages/Theme - Default/Default.sublime-theme) - 别写错键名:
"caret-style"(短横线)或"care_style"都无效,必须是"caret_style"
最稳的组合就三行:"caret_style": "solid"、"caret_extra_top": 0、"caret_extra_bottom": 0。多加的参数不是增强,而是引入不稳定因素——尤其当用着非默认主题、开了 GPU 渲染或连着远程桌面时。

















