Sublime Text 4.4+ 中光标不闪烁的唯一可靠方式是设"caret_style":"solid"并同时将"caret_extra_top"、"caret_extra_bottom"、"caret_extra_width"均设为0;"caret_blinking":false已废弃且无效,因该键名被移出配置解析白名单,闪烁控制完全由caret_style渲染路径决定。

Sublime Text 4.4+ 中,光标“不闪烁”的唯一可靠方式是设 caret_style 为 "solid",并同时将 caret_extra_top、caret_extra_bottom、caret_extra_width 全部显式设为 0。其他任何单独配置(比如 caret_blinking: false)都无效或已被弃用。
为什么 caret_blinking: false 完全没用
这个键名在 ST4.4+ 中已从配置解析白名单里移除——写了等于不存在。它只在极老的 ST3 分支中部分生效,且行为不稳定。Sublime 的闪烁不是靠布尔开关控制的,而是由 caret_style 所选的渲染路径决定:"phase" 和 "smooth" 天然走动画帧循环,"solid" 则直接跳过整个动画调度器。
-
caret_blinking不是配置项,是无效字段,删掉别留着 - 即使你看到旧教程里写了它,也说明那篇内容针对的是 ST3 或更早版本
- 系统级光标设置(如 macOS 的「隐藏键盘光标」)对 Sublime 无影响,别指望靠系统关掉
必须同时清零三项 caret_extra_* 参数
只写 "caret_style": "solid" 在多数场景下能停闪,但高 DPI 缩放、远程桌面、或某些 UI 主题下,残留的 caret_extra_top 等值会导致像素对齐异常,引发视觉抖动,被误判为“还在闪”。这不是 bug,是渲染残留。
-
"caret_extra_top": 0:防止光标上缘偏移 -
"caret_extra_bottom": 0:防止下缘拉伸或错位 -
"caret_extra_width": 0:避免加粗带来的微动干扰(对"solid"本身无效,但不清零会触发状态刷新)
caret_style 各值的实际行为差异
每个值对应完全不同的底层渲染分支,不能单看名字判断是否禁闪。“不闪”只取决于是否绕过定时器和透明度计算。
-
"solid":唯一原生静态模式,纯色矩形直出,不参与任何帧动画,推荐作为默认 -
"block":非官方支持值,行为不稳定,等宽字体下可能挤占邻近字符空间 -
"wide"、"phase"、"smooth":全部会闪烁,且无法通过调慢周期消除;blink_interval对它们仅调节节奏,设为 0 会被忽略 -
"underline":静态下划线,虽不闪但小字号或某些字体(如 Fira Code)下几乎不可见
改完不生效?先排查这三类干扰源
JSON 格式正确、参数也写对了,光标却仍在微动或跳帧,大概率不是配置问题,而是外部覆盖:
- 插件劫持:如
BlockCursor、Vintageous、FocusMode会接管光标渲染,用户设置全失效;临时禁用插件验证 - UI 主题覆盖:如 Material Theme 会强制重载
caret_style;先切回"theme": "Default"测试 - 硬件加速冲突:开启
"gpu_window_buffer": true时,"block"或"smooth"可能出现滚动残影;"solid"不受影响
所有修改只写在 Preferences → Settings 右侧「User」面板,左侧 Default 改了无效且会被升级覆盖。保存即生效,无需重启。真正容易被忽略的,是那三个 caret_extra_* 参数——漏掉任意一个,Sublime 就会强制启用状态刷新,导致光标微动、抖动甚至错位。


















