唯一可靠组合是"caret_style":"solid"+"caret_animation_enabled":false;"phase"和"smooth"仍会明暗变化或残留残影,"block"和"underline"不关动画也会微闪。

Sublime 的 caret_style 值到底怎么选才不闪
想让光标彻底不闪烁,唯一可靠组合是 "caret_style": "solid" + "caret_animation_enabled": false。别信“设成 "phase" 就不闪”——它只是改了动画方式,依然按周期明暗变化;"smooth" 在 GPU 加速开启时还可能残留残影。"block" 和 "underline" 虽然视觉上更醒目,但若没关掉动画,照样会微闪。macOS 用户尤其要注意:"phase" 在部分显卡驱动下会跳帧,换成 "solid" 立刻缓解。
caret_extra_width 在哪些 caret_style 下真正生效
caret_extra_width 只对 "solid" 和 "underline" 有效,且效果差异明显:"solid" 下它加粗的是整条竖线(左右延展),"underline" 下则是加宽底线本身。而 "wide"、"smooth"、"phase" 这几个值完全忽略该参数——它们的宽度由字体渲染引擎决定,硬写 caret_extra_width 没反应。高 DPI 屏幕上,"solid" 配 "caret_extra_width": 2 是最稳的加粗方案;设到 4 或以上容易在等宽字体中挤压邻字。
为什么改了设置却看不到光标变宽或停闪
常见失效原因有三个:
- 改错了配置位置:必须写进
Preferences → Settings – User(右侧),左侧默认设置改了也白搭 - 被插件覆盖:比如
BlockCursor或FocusMode会动态劫持光标样式,优先级高于用户 JSON - 颜色方案硬编码:某些
.tmTheme文件里直接写了caret的 color 或 size,会覆盖你的caret_extra_width和caret_style
验证方法:临时禁用所有插件,换回 Default.sublime-theme,再测试。
VSCode 用户切过来要注意的 key 名差异
别把 VSCode 的习惯带进 Sublime:editor.cursorBlinking 和 editor.cursorStyle 在 Sublime 里根本不存在。Sublime 对应的是 caret_blinking(开关)、caret_style(形态)、blink_interval(仅 ST4 build 4143+ 支持)。写错 key 名如 cursorBlink 或 caret_blink 会静默失败——Sublime 不报错,但也不生效。另外,Sublime 没有 "block-outline" 这种空心块选项,想模拟得靠主题或插件。











