Sublime Text禁用光标闪烁的唯一可靠方式是设"caret_style":"solid"并显式置零caret_extra_top、caret_extra_bottom、caret_extra_width;其他参数如caret_blinking或blink_interval基本无效或已被弃用。

Sublime Text 没有“光标闪烁动画”的独立开关,所谓“修改动画”本质是切换光标绘制模式——改对 caret_style 才管用,其他参数只是配合或干扰项。
为什么 caret_blinking 设为 false 还在闪?
因为 Sublime 的闪烁逻辑不依赖这个字段。它只在 caret_style 为 "phase" 或 "smooth" 时才真正启用动画;设 "caret_blinking": false 单独存在时几乎无效果,甚至被忽略。ST4.4+ 起该字段已基本弃用,官方文档也不再提及。
-
caret_style必须是"solid"才跳过所有动画路径——这是唯一原生停闪方式 - 若同时写了
"wide_caret": true,会强制退化回竖线并恢复闪烁,哪怕caret_style是"solid" - 某些插件(如
BlockCursor、Vintageous)会接管光标渲染,此时用户设置里的caret_style等参数全部失效
caret_style 可选值的实际行为差异
不是所有值都支持“动画”,也不是所有值都能“禁闪”。不同值走的是完全不同的绘制分支:
-
"phase":默认值,带淡入淡出的竖线,无法调速,只能靠换样式停闪 -
"smooth":平滑过渡竖线,仅在 GPU 渲染开启("gpu_window_buffer": true)时可能滚动残影 -
"wide":加粗竖线,仍会闪烁,且caret_extra_width对它无效 -
"block":块状光标,但 Sublime 原生不支持“块状+不闪”,它仍走闪烁逻辑,除非额外关掉系统级光标 -
"solid":唯一静态模式,不参与任何帧动画,也不响应系统光标设置
真正禁掉动画的最小必要配置
只写 "caret_style": "solid" 不够稳定。部分主题或高 DPI 缩放下,残留的 caret_extra_* 值会导致视觉抖动,看起来像“伪闪烁”。
- 必须显式写入:
"caret_extra_top": 0、"caret_extra_bottom": 0、"caret_extra_width": 0 - 禁用
"animation_enabled": false是全局动画开关(标签页切换、侧边栏展开等),非必需,但开了更彻底 - 别碰
"blink_interval":它只在极少数 ST4.4+ build(如 4143+)中实验性生效,且优先级低于系统设置 - 检查是否误改了左侧 Default 面板——所有修改必须落在 Preferences → Settings 右侧 User 面板中
插件和主题怎么偷偷改光标?
很多 UI 主题(比如 Theme - Spacegray)会在 color scheme 文件里硬编码 caret 颜色和透明度,导致 "solid" 光标颜色太浅,看起来像“消失”或“在闪”。还有插件如 Origami 会监听 on_selection_modified 并频繁重置选区,强制触发光标重绘,造成伪闪烁。
- 临时禁用所有插件,看是否恢复正常;若恢复,逐个启用排查
- 重载主题(Command Palette →
UI: Reload Theme)后观察光标是否回归预期 - 确认当前 color scheme 文件(
.sublime-color-scheme)中"caret"段未被覆盖成低 alpha 值
最容易被忽略的是:你以为在调 Sublime 的动画,其实是在跟操作系统光标设置、GPU 渲染、插件劫持、主题覆盖四层东西同时较劲。直接设 "caret_style": "solid" + 清空 caret_extra_* 是目前最可靠、最轻量、且无需重启的解法。











