最可靠方案是将 caret_style 设为 "solid" 并设 caret_extra_top、caret_extra_bottom、caret_extra_width 均为 0,此组合原生禁用闪烁且无需插件。

怎么让 Sublime 光标不闪烁(最可靠方案)
直接设 caret_style 为 "solid",并清空额外尺寸参数——这是唯一原生、稳定、无需插件的禁闪方式。Sublime 的“闪烁”本质是 phase 或 wide 等样式在动画周期内反复显隐,而 "solid" 根本不走动画逻辑,从底层就跳过闪烁流程。
-
caret_style必须设为"solid"(不是"wide",也不是"smooth") - 同时显式写入:
"caret_extra_top": 0、"caret_extra_bottom": 0、"caret_extra_width": 0——缺一不可,否则部分主题或硬件加速下仍可能残留微动 - 改的是右侧「Preferences → Settings」里的用户设置(
Settings – User),左侧默认配置改了也无效,还会被升级覆盖 - 改完保存即生效,不用重启,也不用重载窗口
为什么 blink_interval: 0 不一定管用
很多人试过设 "blink_interval": 0 或 "caret_blinking": false,但发现光标还是轻微晃动甚至闪烁。这是因为 Sublime 的闪烁控制有优先级:当 caret_style 是 "phase" 或 "wide" 时,blink_interval 只调节动画节奏,不关闭动画本身;而 "solid" 是唯一绕过整个动画管线的样式。
-
blink_interval在 macOS 上常被系统级光标策略覆盖,尤其开启「辅助功能→隐藏指针」后更不可靠 -
"caret_blinking": false对"phase"类样式仅减弱幅度,无法彻底消除视觉浮动感 - 真正“静态”的只有
"solid"——它渲染为一个填满字符高度的实心矩形,无过渡、无插值、无帧动画
想加粗/拉长光标?别只调 wide_caret
wide_caret 是个误导性参数:它只对竖线类样式(如 "phase"、"wide")起作用,且效果受字体宽度和 DPI 影响极大;在 Retina 屏或窄字体(如 Fira Code Light)下几乎看不出变化。要真正提升辨识度,得组合调整尺寸偏移量。
- 对
"wide"或"phase"样式,优先加"caret_extra_width": 2和"caret_extra_bottom": 1("caret_extra_top": 1可选) -
"caret_extra_width"是横向加粗像素值,设为2在普通屏够用,MacBook Pro 用3~4更稳妥 - 避免同时开
wide_caret和caret_extra_width:前者影响全局竖线粗细,后者精准控制当前光标,混用易导致光标边缘模糊或错位
光标变横线(_)不是故障,但容易误判
横线光标 = 当前处于 overwrite 模式,不是样式配置出错。Sublime 默认响应 Insert 键切换,Windows/Linux 直按即可,macOS 需 Fn + Enter 或通过菜单 Selection → Toggle Overwrite Mode 切换。
- 如果频繁误触,可在键绑定中禁用物理键:
[ { "keys": ["insert"], "command": "noop" } ] - 注意:横线可能很细、对比度低,尤其在深色主题下难察觉——实际已进入 overwrite,打字会覆盖后续字符
- 验证方法:在已有文本中间输入一个字母,看光标后一个字符是否消失;若消失,就是 overwrite 模式在生效
caret_style 定义,不是靠主题、插件或系统设置驱动。所有“看起来像块状”“好像不闪了”的折中方案,都比不过一行 "caret_style": "solid" 加三个零值参数来得干净。其他参数只是锦上添花,这组才是底盘。










