将 caret_style 设为 "solid" 可实现不闪烁的常亮块状光标,它跳过闪烁调度器,比 caret_blinking: false 更可靠;需在用户设置中正确配置 JSON 并保存。

怎么让光标变成不闪烁的块状
Sublime 原生没有 Vim 那种“插入/命令双模式块光标”,但用 caret_style 设为 "solid" 就是最接近的常亮块状效果:它会渲染成一个填满字符高度、无动画、不闪烁的实心矩形。
关键不是关掉闪烁,而是换一种完全不走动画逻辑的样式——"solid" 会跳过整个闪烁调度器,比设 caret_blinking: false 更可靠(后者在某些版本里无效)。
- 打开 Preferences → Settings,只改右侧「User」面板
- 确保 JSON 格式正确,填入:
{ "caret_style": "solid", "caret_extra_top": 0, "caret_extra_bottom": 0, "caret_extra_width": 0 } - 保存后立即生效;若没变,检查是否有末尾多余逗号或引号不匹配
- 某些 UI 主题(如 Material Theme)会覆盖
caret_style,此时需禁用主题的光标定制选项
怎么加粗光标又不变成块
如果想要更醒目的竖线光标(比如在高分屏或深色主题下),优先用 "wide" + caret_extra_width 组合,而不是依赖 wide_caret —— 后者行为不稳定,且在部分字体下可能失效。
"wide" 是加粗竖线,"phase" 是带左右晃动的动态粗线,视觉上反而更易定位;而 "smooth" 只是边缘抗锯齿,并不加粗。
- 推荐配置:
{ "caret_style": "wide", "caret_extra_width": 2, "caret_extra_bottom": 1 } - Retina 屏或小字号时,
caret_extra_width可设为3或4 -
caret_extra_width对"solid"无效,仅对"smooth"、"wide"等竖线类样式起作用 - 别和
wide_caret: true混用,它可能被主题忽略,且与caret_extra_width冲突
为什么调 blink_interval 不管用
很多人想通过改 blink_interval 来“减慢闪烁”,结果发现设成 5000 还是闪得难受——因为 Sublime 的闪烁不是靠这个值控制启停,而是由 caret_style 类型决定是否进入动画流程。
blink_interval 只影响 "phase" 或 "blink" 下的周期长度,无法设为 0 来关闭;设 0 会被自动重置为最小值(约 200ms)。
-
"phase"和"smooth"本质仍是动画:前者亮度周期变化,后者透明度渐变,Sublime 仍在每帧重绘 - 真正停掉闪烁,唯一办法是换样式:用
"solid"(彻底无动画)或"underline"(静态下划线) - macOS 系统级「隐藏键盘光标」设置对 Sublime 文本光标完全无效,它是独立绘制的 UI 元素
哪些设置容易被主题覆盖
你配好了 caret_style,但重启后发现光标还是细线、还在闪——大概率是当前 UI 主题(比如 Theme - Spacegray、Ayu)在自己的 .sublime-theme 文件里硬编码了光标行为。
这类主题常通过 layer0.opacity 或 class: caret 规则强行接管光标渲染,导致用户设置里的 caret_style 被忽略。
- 临时验证:切换回默认主题(
"theme": "Default.sublime-theme"),看光标是否按预期变化 - 若确认是主题问题,可在主题包目录中查找
*.sublime-theme文件,搜索caret或layer0相关段落并注释掉 - 更稳妥的做法:换用轻量主题(如 Default、Adaptive),或选用明确声明支持
caret_style的主题(如 Flatland) - 别在默认配置(左侧窗格)里改任何东西——升级后会被覆盖,且不生效
最常被忽略的一点:改完设置必须保存(Ctrl+S/Cmd+S),且要确保右侧用户配置是合法 JSON。多一个逗号、少一个引号,Sublime 就静默失败,光标纹丝不动。

















