真正可用的高对比度方案需满足三点:背景色明度≤25%、主文本明度≥85%、选中背景用带alpha的hsla(200,70%,40%,0.35),并经WebAIM工具验证对比度≥4.5:1。

高对比度不是调亮 foreground 就完事——它必须同时满足背景够深、文字够亮、选中区域不“融”进背景里,否则越调越累眼。
怎么判断当前 color_scheme 是否真支持高对比度
别信名字里带 “High Contrast” 的主题,很多只是加粗了关键字。真正可用的高对比度方案需满足三点:
- 背景色明度 ≤ 25%(
hsl(210, 25%, 15%)或rgb(30, 30, 35)级别) - 主文本 foreground 明度 ≥ 85%(如
"#e6e6e6"或hsl(0, 0%, 90%)) - 选中背景(
selection)不能是纯灰或低饱和蓝,否则在暗底上发虚——推荐用带 alpha 的hsla(200, 70%, 40%, 0.35)
用 Ctrl+Shift+P → 输入 Show Scope Name,看状态栏显示的 scheme 路径是否在 Packages/User/ 下;如果不是,说明你正在用只读内置方案,改了也白改。
修改 selection 高亮色时最常踩的三个坑
selection 规则写错位置,Sublime 直接忽略:
- 必须放在
"rules"数组内,不能平级写在根对象里("selection": { ... }是无效的) - 不能只改
foreground——那是文字颜色,对高亮背景没影响;重点改"background" - 如果文件里原本没有
"scope": "selection"条目,手动加一条时,注意 JSON 末尾逗号:前一条规则后要加逗号,新加的这条末尾不能有逗号
示例有效写法:
{
"name": "Selection",
"scope": "selection",
"settings": {
"background": "hsla(200, 70%, 40%, 0.35)"
}
}
为什么改完 selection 还是看不清同词高亮
同词高亮(双击单词后其他相同词变色)由另一套规则控制,和 selection 无关:
- 搜索
"name": "Highlight"或"scope": "region.yellowish" - 它的
background值若设成"#33333380"这种极淡灰,在深背景上等于没高亮 - 建议统一设为比
selection更浅一层的色值,比如"hsla(200, 60%, 50%, 0.25)",确保能区分但不刺眼
全局对比度校验不能靠肉眼
人眼对蓝紫系敏感度低,容易误判“够亮”。真正可靠的验证方式只有两个:
- 用 WebAIM Contrast Checker 在线工具测
background和foreground的对比度,必须 ≥ 4.5:1(WCAG AA 标准) - 打开一段含注释、字符串、关键字的代码,关掉所有插件,静看 30 秒——如果某个语法元素让你下意识眯眼或需要停顿辨认,那就是它拖了对比度后腿
最易被忽略的是注释颜色:"comments" 若设得太亮(如 "#a0a0a0"),在深背景上会抢走关键字注意力;建议压到 "#6c757d" 这类低饱和灰蓝。


















