唯一彻底禁用光标闪烁的方案是设置"caret_style": "solid"、"caret_extra_top": 0、"caret_extra_bottom": 0、"caret_extra_width": 0,缺一不可;其他选项如blink_interval=0或caret_blinking=false均不能根本解决。

怎么让光标彻底不闪烁(ST4.4+ 稳定方案)
Sublime Text 的“不闪烁”不是关个开关就行,而是必须跳过所有动画绘制路径。唯一原生可靠的方式是:"caret_style": "solid",但单写这一项**一定不够**——残留的 caret_extra_top、caret_extra_bottom、caret_extra_width 会在高 DPI 屏或某些主题下触发微动,看起来像伪闪烁。
- 必须同时设这四项:
"caret_style": "solid"、"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" 可靠)
- 数值太小(如 100)或太大(如 2000)容易跳帧、卡顿,尤其开启 GPU 渲染时
caret_style 各值实际行为差异(不是名字说了算)
每个值对应不同渲染分支,直接影响是否走定时器、是否计算透明度、是否预留像素空间:
-
"solid":唯一真正静态模式,纯色矩形直出,不参与任何帧动画,也不响应系统闪烁节奏
-
"phase" 和 "smooth":仍有透明度渐变或淡入淡出,属于“弱动画”,不算真正禁闪
-
"wide" 和 "block":都支持闪烁,且 caret_extra_width 对它们无效
-
"underline":只画基线,小字号或某些字体(如 Fira Code)下几乎不可见
-
"blink" 已废弃,设了也降级为 "phase",不推荐使用
改完设置不生效?关键检查点
Sublime 只读取用户配置文件(Preferences → Settings – User),左侧默认设置改了无效。
- 必须保存 JSON 文件,且格式合法(逗号、引号、括号闭合)
- 某些 UI 主题(如 Material Theme)会劫持
caret_style,建议先切回 "theme": "Default" 验证
- 插件如
BlockCursor、FocusMode 会在运行时重写光标样式,需临时禁用排查
- macOS 用户请同步检查系统辅助功能里的“插入点闪烁”开关(
IBInsertionPointBlinkPeriod),它优先级最高
"caret_style": "solid"、"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"可靠) - 数值太小(如 100)或太大(如 2000)容易跳帧、卡顿,尤其开启 GPU 渲染时
caret_style 各值实际行为差异(不是名字说了算)
每个值对应不同渲染分支,直接影响是否走定时器、是否计算透明度、是否预留像素空间:
-
"solid":唯一真正静态模式,纯色矩形直出,不参与任何帧动画,也不响应系统闪烁节奏
-
"phase" 和 "smooth":仍有透明度渐变或淡入淡出,属于“弱动画”,不算真正禁闪
-
"wide" 和 "block":都支持闪烁,且 caret_extra_width 对它们无效
-
"underline":只画基线,小字号或某些字体(如 Fira Code)下几乎不可见
-
"blink" 已废弃,设了也降级为 "phase",不推荐使用
改完设置不生效?关键检查点
Sublime 只读取用户配置文件(Preferences → Settings – User),左侧默认设置改了无效。
- 必须保存 JSON 文件,且格式合法(逗号、引号、括号闭合)
- 某些 UI 主题(如 Material Theme)会劫持
caret_style,建议先切回 "theme": "Default" 验证
- 插件如
BlockCursor、FocusMode 会在运行时重写光标样式,需临时禁用排查
- macOS 用户请同步检查系统辅助功能里的“插入点闪烁”开关(
IBInsertionPointBlinkPeriod),它优先级最高
"solid":唯一真正静态模式,纯色矩形直出,不参与任何帧动画,也不响应系统闪烁节奏"phase" 和 "smooth":仍有透明度渐变或淡入淡出,属于“弱动画”,不算真正禁闪"wide" 和 "block":都支持闪烁,且 caret_extra_width 对它们无效"underline":只画基线,小字号或某些字体(如 Fira Code)下几乎不可见"blink" 已废弃,设了也降级为 "phase",不推荐使用- 必须保存 JSON 文件,且格式合法(逗号、引号、括号闭合)
- 某些 UI 主题(如 Material Theme)会劫持
caret_style,建议先切回"theme": "Default"验证 - 插件如
BlockCursor、FocusMode会在运行时重写光标样式,需临时禁用排查 - macOS 用户请同步检查系统辅助功能里的“插入点闪烁”开关(
IBInsertionPointBlinkPeriod),它优先级最高
真正停闪的逻辑很硬:只有 "solid" + 清零三项 caret<em>extra</em>* 才绕过所有动画路径。其他组合看似接近,但在高缩放、远程桌面或特定显卡驱动下,仍可能抖动或错位。











