唯一稳定禁闪+加粗的组合是"caret_style":"solid"并设caret_extra_top、caret_extra_bottom、caret_extra_width均为0;其他方案如仅调caret_extra_width或用"wide"等均无法彻底禁闪,且易受主题、插件或系统设置干扰。

怎么让 Sublime Text 光标变粗又不闪
唯一稳定禁闪+加粗的组合是 "caret_style": "solid" + 三个 caret_extra_* 均设为 0。只改 caret_style 或只调 caret_extra_width 都可能残留微动或伪闪烁,尤其在高 DPI 屏或某些 UI 主题下。
常见错误现象:
- 设了
"caret_extra_width": 2但光标还是细——因为caret_extra_width对"smooth"和"phase"无效,只对"wide"和"solid"生效 - 设了
"caret_style": "wide"却还在闪——"wide"本身不禁止闪烁,必须配"caret_blinking": false或换"solid" - 开了
"wide_caret": true又设"caret_style": "wide",导致光标错位或粗细异常——二者功能重叠,选其一即可
caret_style 各值对宽度和闪烁的实际影响
caret_style 不只是“换个形状”,它直接决定渲染路径:是否走动画定时器、是否计算透明度、是否预留额外像素空间。不同值对宽度和闪烁的控制能力差异很大。
-
"smooth":默认细竖线,支持caret_width(注意不是caret_extra_width),但不支持禁闪 -
"wide":加粗竖线(约 2px),caret_extra_width可进一步加粗,但闪烁需额外关掉 -
"phase":视觉上左右轻微晃动的粗光标,不依赖定时器闪烁,但仍有透明度变化,部分人会觉得“像在闪” -
"solid":填满字符高度的实心块,无任何动画逻辑,真正停闪;caret_extra_width在此模式下才起作用,且必须配合清空上下扩展值 -
"underline"和"wide_underline":下划线形态,宽度由字体决定,caret_extra_width无效
为什么 blink_interval 设成 0 还在闪
blink_interval 在 ST4 build 4143+ 之后仅对已弃用的 "blink" 模式起作用,而该模式多数主题下会被自动降级为 "phase" 或直接忽略。更关键的是:Windows/macOS/Linux 系统级可访问性设置会覆盖 Sublime 的任何闪烁配置。
- macOS 上,系统“辅助功能 → 显示 → 光标闪烁”开关优先级最高,Sublime 的设置基本无效
- Windows 高对比度模式启用时,
caret_style可能被强制回退为细竖线 - 远程桌面或高缩放场景下,
blink_interval容易因帧率不同步产生跳帧,反而更干扰 - 真正可靠的停闪方式只有两个:
"caret_blinking": false(简单但有微动风险)或"caret_style": "solid"+ 清空所有caret_extra_*(原生、稳定、无副作用)
修改后没生效?先查这三处
Sublime 的光标样式极易被外部因素覆盖,改完配置却没反应,大概率不是配置写错了,而是被别的东西压住了。
- 确认改的是右侧“User Settings”,不是左侧“Default Settings”——后者改了也无效,还会被升级重置
- 检查是否装了 UI 主题(如 Material Theme、Ayu),它们常通过 CSS 注入覆盖光标渲染;临时禁用主题再试
- 打开
Preferences → Settings,搜索ignored_packages,确认里面没有"Typewriter"或其他光标相关插件名——插件被静默忽略时,命令面板搜不到,控制台也不报错
最常被忽略的点是:系统级光标设置和 UI 主题的双重覆盖。哪怕你把 caret_extra_top、caret_extra_bottom、caret_extra_width 全设为 0,只要主题 CSS 里写了 .caret { height: 1.2em; },光标就还是会“动”。


















