必须设"caret_style": "solid"才能实现不闪烁的实心块光标,填满字符高度且不受wide_caret影响;填"block"无效,会被忽略退回"phase"。

Sublime 的光标样式不能靠主题或插件切换,必须改 caret_style 这个配置项 —— 写错值(比如填 "block")或写在默认设置里,全都不生效。
怎么让光标变成实心方块?只认 "solid",不是 "block"
很多人搜“Sublime 方块光标”,照着 VSCode 习惯填 "block",结果没变化。Sublime 原生不支持这个值,它会直接忽略,退回默认的 "phase"。真正能渲染出填满字符高度、不闪烁、实心矩形的,只有 "solid"。
-
"solid"是唯一跳过闪烁调度器的样式,视觉上就是一块实心方块,深色背景 + 高 DPI 屏下尤其清晰 - 如果还带闪烁,必须额外加
"caret_animation_enabled": false,否则"solid"仍可能轻微呼吸式晃动 - 某些 UI 主题(如 Material Theme)会硬编码覆盖
caret_style,验证方法:临时切回"theme": "Default.sublime-theme"
caret_style 各值的实际效果和适用场景
别只看名字,每个值对应不同渲染逻辑:
-
"phase":左右轻微晃动,比纯闪烁更易定位,但 macOS 某些显卡驱动下会卡顿 -
"wide":需同时设"wide_caret": true才生效;宽度受"caret_extra_width"影响(Retina 屏建议从 3 起试) -
"underline":仅对齐当前字符基线,小字号或窄字体(如早期 Consolas)下几乎不可见;空格位置不显示,容易误判为“光标消失” -
"wide_underline":粗下划线,比"underline"更醒目,但同样不覆盖空格区域
为什么改了设置没反应?三个最常踩的坑
常见错误不是配置写得不对,而是被其他东西覆盖或干扰:
- 改在 Preferences → Settings 左侧(Default 设置)——那是只读参考,改了无效,还会被升级覆盖
- 当前用了非默认主题,比如
Material Theme或ayu,它们会强制重写光标样式 - 装了光标增强类插件(如
Block Cursor for Sublime Text或Custom CSS and JS Loader),它们注入的 CSS 优先级高于原生配置
验证是否真生效:关掉所有终端面板,禁用可疑插件,新建一个纯文本文件(如 test.txt)测试,别在 Markdown 或 Python 文件里试——某些语言扩展会临时改光标(比如调试时变手型)。
竖线变下划线、下划线变竖线?按 Insert 键就行
这不是配置问题,是编辑模式切换。键盘上 Insert 键(通常在 Delete 旁边)控制插入/覆盖模式:
- 插入模式(竖线):新输入的字插入到光标位置,原文后移
- 覆盖模式(下划线):新输入的字直接替换光标位置的字
这个键触发的是底层编辑行为,和 caret_style 无关。如果你发现光标突然从竖线变成下划线,大概率是误触了 Insert,按一下就切回来。
真正要稳定控制光标形态,核心就一条:只动用户设置里的 caret_style,值限定在 "phase"、"wide"、"solid"、"underline"、"wide_underline" 这几个官方支持项里,其他任何名字都无效。

















