sublime text 4.4+ 中 caret_blinking 已废弃,真正禁闪需设 "caret_style": "solid" 并清零 caret_extra_top、caret_extra_bottom、caret_extra_width。

为什么caret_blinking设为false完全没用
Sublime Text 从 ST4.4 开始已彻底弃用 caret_blinking 这个键名——它不在配置解析白名单里,写了等于不存在。你搜到的旧教程里这条配置,要么是误传,要么针对早已淘汰的 ST3 分支(且在 ST3 中也仅部分生效)。更关键的是,Sublime 的光标闪烁不是靠一个布尔开关控制的,而是由 caret_style 所选的渲染路径决定的:"phase" 和 "smooth" 天然走动画帧循环,"solid" 则直接跳过整个动画调度器。
caret_style 哪些值真能停闪,哪些只是“看起来像停了”
可用值中只有 "solid" 是原生无动画模式;"block" 和 "underline" 在某些主题或缩放下可能“不闪”,但它们仍依赖系统光标刷新逻辑,稳定性远不如 "solid"。而 "wide"、"phase"、"smooth" 全部会闪烁,且无法通过调慢周期(比如改 blink_interval)来消除——这个参数本身在 Sublime 中并不存在,设了也无效。
-
"solid":静态竖线,不参与任何重绘计时,真正停闪 -
"block":块状光标,但 Sublime 原生未对其做非动画优化,高 DPI 下易错位或伪闪烁 -
"wide":加粗竖线,仍走闪烁路径;若同时启用"wide_caret": true,会强制退化回默认竖线并恢复闪烁
最小必要配置:只写 "caret_style": "solid" 还不够稳
单独设 "caret_style": "solid" 在多数场景下能停闪,但在高 DPI 缩放、远程桌面、或某些 UI 主题下,残留的 caret_extra_top、caret_extra_bottom、caret_extra_width 值会导致视觉抖动,被误判为“还在闪”。这不是 bug,而是像素对齐异常引发的渲染残留。
- 必须显式清零三项:
"caret_extra_top": 0、"caret_extra_bottom": 0、"caret_extra_width": 0 - ST4.4+ 用户可额外加
"animation_enabled": false,但注意它会影响标签页切换、侧边栏展开等全局动画,不只是光标 - 所有修改只写在 Preferences → Settings 右侧「User」面板,左侧 Default 改了无效且会被升级覆盖
改完还是闪?先排查这三类干扰源
如果 JSON 格式正确、参数也写对了,光标却仍在微动或跳帧,大概率不是配置问题,而是外部干扰:
- 插件劫持:如
BlockCursor、Vintageous等插件会接管光标渲染,用户设置全失效;临时禁用插件验证 - 硬件加速冲突:开启
"gpu_window_buffer": true时,"smooth"模式易出滚动残影,看起来像光标在“拖尾”;可试设"hardware_acceleration": "none" - 远程/虚拟桌面渲染异常:RDP、VNC 等协议常丢帧或插值错误,导致
"solid"光标被系统级光标层覆盖或抖动;此时换用本地连接或改用 VS Code 更实际
"solid" 是唯一原生跳过帧循环的选项,其他都是障眼法。细节上,那三个 caret_extra_* 参数清零比加 animation_enabled 更底层、更可靠——尤其当你用的是多显示器或远程开发环境时。











