将 caret_style 设为 "solid" 可启用不闪烁的实心块光标,需手动添加至用户设置JSON,不受 wide_caret 影响,但可能被UI主题覆盖。

怎么让光标变成不闪烁的实心块?caret_style 设为 "solid" 是唯一原生支持的真块状光标,它填满整个字符高度、无闪烁、不依赖插件。这不是“加粗竖线”的视觉模拟,而是渲染成一个实心矩形——尤其在深色主题或高分屏下辨识度极高。
- 必须手动添加到 Preferences → Settings – User 的 JSON 中,默认配置里没有这一项
- "solid" 不受 wide_caret 影响,开不开都一样是块
- 若你同时用了 "wide_caret": true,对 "solid" 完全无效,别白配
- 某些 UI 主题(如 Material Theme)会强行覆盖 caret_style,切回 "theme": "Default.sublime-theme" 可快速验证是否被主题劫持
想加粗竖线光标,该用 wide 还是 phase?"wide" 和 "phase" 都是竖线类样式,但行为不同:"wide" 是静态加粗,"phase" 会在左右轻微晃动,视觉上更抢眼,适合快速定位。
- 推荐组合:"caret_style": "wide" + "caret_extra_width": 2(macOS/4K 屏建议从 3 起试)
- "wide_caret": true 必须开启,"wide" 才真正变宽;但 "phase" 不需要它也能晃
- "smooth" 仅影响边缘过渡动画,不是形状变化,别误以为它能加粗
- 注意:字体本身窄(比如某些老旧等宽字体),再调参数也难显眼,优先换 Fira Code 或 JetBrains Mono
为什么改了设置没反应?三个最常被忽略的原因 Sublime 光标配置生效失败,90% 不是写错了,而是被其他层覆盖或干扰。
- 主题硬编码覆盖:自定义 .tmTheme 文件里可能有 caret 或 foreground 相关字段,直接屏蔽用户设置
- DPI 适配失效:Retina 或 4K 外接屏下,caret_extra_width: 1 几乎看不见,得设到 3–4
- 插件冲突:比如 Block Cursor Everywhere 启用后,会接管光标渲染逻辑,此时 caret_style 配置可能被忽略
- 验证方法:临时切换成默认主题 + 关掉所有插件,再测试配置是否生效
插入模式和普通模式分别显示不同光标?原生做不到
Sublime 原生不支持 Vim 风格的“模式感知光标”,caret_style 是全局统一的。
- Vintageous 或 Vintage 插件只提供按键绑定,不修改光标渲染
- 真正实现 Normal 模式块状、Insert 模式竖线,必须装 Block Cursor Everywhere
- 安装后默认就生效,无需额外配置;但注意它和某些旧版 ST3 build(如 caret_extra_width 与 wide_caret 混用)存在兼容问题
- 如果你只用原生功能,就别折腾“动态切换”——接受它是静态的,把 "solid" 或 "wide" 调到最顺眼就行
光标看着小、不亮、不稳,问题往往不在参数本身,而在主题、DPI、插件这三层遮罩之下。调之前,先关主题、关插件、换字体,比反复改 caret_extra_bottom 有用得多。

















