必须修改当前启用的.sublime-color-scheme文件中rules数组内"scope": "selection"条目,用hsla/rgba或6位hex设background;需通过show scope name定位路径,复制到packages/user/下编辑并手动启用,且确保json语法正确、无bom、未被project或插件覆盖。

Sublime Text 里改不了选中文本颜色,99% 是因为没动对 selection 规则,或者改了但被 JSON 语法错误、路径错、插件覆盖静默忽略了。
怎么找到并编辑正确的 .sublime-color-scheme 文件
别去 Preferences → Settings 里瞎翻,那里面加任何 selection_foreground 都无效。你必须定位当前真正生效的配色方案文件:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Show Scope Name回车,状态栏会显示类似Packages/Dracula Color Scheme/Dracula.sublime-color-scheme的路径 - 再输
PackageResourceViewer: Open Resource,按提示选中该 scheme,它会打开原始文件 - 全选复制内容,粘贴到
Packages/User/下新建一个文件,比如Dracula-custom.sublime-color-scheme - 回到
Preferences → Color Scheme → User → Dracula-custom手动启用它
怎么写有效的 selection 规则
selection 必须是 "rules" 数组里的一条完整对象,不是扁平键值对,也不能放在根层级。常见失效写法包括:
- 写成
"selection": { "background": "#ff0000" }—— 完全不识别 - 漏掉
"scope": "selection",只留"name": "Selection"—— Sublime 静默回退到默认深蓝 - 用 8 位 hex(如
#2a5c8a80)—— Windows 上常被忽略;推荐用hsla(210, 30%, 40%, 0.4)或标准 6 位 hex(如#2a5c8a) - 整个文件里压根没有
selection条目?就在"rules"数组末尾手动加一段,注意逗号分隔和 JSON 闭合:
{
"name": "Selection",
"scope": "selection",
"background": "#3a405a",
"foreground": "#ffffff"
}
为什么改了 selection 还是看不见同词高亮
这不是 selection 的问题,highlight_word 功能走的是另一套规则,比如 "name": "Highlight" 或 "scope": "region.yellowish"。很多暗色主题把它的 background 设成 "#333333" 这种极淡灰,在深背景上几乎不可见。
- 在同一份
.sublime-color-scheme文件里搜索Highlight或region.yellowish - 优先改它的
background,别只调foreground(那是文字色,对高亮无效) - 避免纯白
#FFFFFF,推荐带 alpha 的hsla(60, 40%, 90%, 0.4),清晰又不刺眼 - 顺便检查用户设置里没关掉功能:
Preferences → Settings右侧确认没有"highlight_word": false
容易被忽略的兼容性与覆盖点
改完保存后颜色没变,大概率卡在这几个地方:
- 没在
Packages/User/下新建副本,而是直接编辑了Packages/Color Scheme - Default/里的原文件——升级后会被覆盖,部分系统路径下还可能只读 - JSON 格式里漏了逗号、多写了逗号、引号不闭合,导致整个配色方案加载失败,Sublime 会悄悄回退到默认方案(比如 Mariana)
- 当前项目有
.sublime-project文件,且里面写了"color_scheme"字段——它会强制覆盖全局设置,优先级最高 - 插件如
BracketHighlighter会主动重绘selection区域,绕过你的设置;可查其配置项,禁用"highlight_matching_brackets_on_selection": true恢复原表现











