唯一真正停闪的方式是设"caret_style":"solid"并同时将"caret_extra_top"、"caret_extra_bottom"、"caret_extra_width"均设为0;"caret_blinking":false在st4.4+中无效,系统级设置优先级更高,且需确保无插件或主题覆盖。

怎么让 Sublime 光标彻底不闪烁
唯一真正停闪的方式是设 "caret_style": "solid",并同时清空三项扩展参数:"caret_extra_top": 0、"caret_extra_bottom": 0、"caret_extra_width": 0。缺一不可——哪怕只漏一个,在高 DPI 屏或某些主题下都会触发微动,看起来像“伪闪烁”。
"caret_blinking": false 在 ST4.4+ 中基本无效;"blink_interval": 0 不关闪烁,只对已弃用的 "blink" 模式起作用,且 macOS 下完全被系统 IBInsertionPointBlinkPeriod 覆盖。
- 改配置必须在 Preferences → Settings → 右侧 Settings – User 区域,左侧默认设置改了无效
- 如果同时启用了
"wide_caret": true,会强制退化回竖线并恢复闪烁,哪怕"caret_style"是"solid" - 系统级光标设置(Windows 辅助功能 / macOS 终端命令 / Linux
xset bc)优先级更高,若改了没反应,先查系统设置
哪些 caret_style 值真能禁闪,哪些只是“看起来不闪”
"solid" 是唯一原生静态模式:纯色矩形直出,不参与任何帧动画,也不响应系统闪烁节奏。其他值都走动画路径:
-
"phase"和"smooth"仍有透明度渐变,属于弱动画,不算真正禁闪 -
"block"名字误导性强,实际仍走闪烁逻辑;部分主题下渲染异常,甚至错位或消失 -
"wide"和"underline"都支持闪烁,且"caret_extra_width"对它们无效 -
"hidden"虽能生效,但极易“丢焦点”,尤其多屏或高缩放时,不推荐
为什么改了 caret_style 没反应
常见原因不是配置写错,而是被更高优先级的东西覆盖:
- UI 主题(如 Material Theme)可能劫持光标渲染,临时切回
"theme": "Default"验证 - 插件(如 BlockCursor、FocusMode、Vintageous)会动态接管光标样式,禁用后重试
- Windows 高对比度模式或 macOS 的辅助功能开关会压倒 Sublime 设置
- JSON 语法错误(比如末尾多逗号)会导致整段配置失效,Sublime 不报错但静默忽略
光标粗细和形状怎么调才稳定
"caret_style" 控制形态,"caret_extra_*" 控制尺寸扩展,但二者行为不通用:
-
"wide"是加粗竖线,宽度由字体决定,"caret_width"对它无效 -
"solid"可配合"caret_extra_width": 2加粗(尤其在 4K 屏上更醒目) -
"underline"只画基线,小字号或 Fira Code 等字体下可能看不见 -
"block"覆盖整个字符区域,但font_size ≥ 14时易挤占邻近字符空间
真正容易被忽略的是:所有 caret_extra_* 参数单位不是像素,而是“在原光标基础上额外扩展多少逻辑像素”,不同缩放比例下效果浮动明显。











