需在当前主题的 .sublime-color-scheme 文件 "rules" 数组中添加:{"name": "line selection", "scope": "line-selection", "background": "#2d3748"},name 和 scope 必须严格匹配,background 仅支持 #rrggbb 格式。

怎么改选中行(line selection)的背景色
Sublime Text 里“选中行”和“选中文本”是两套独立控制逻辑,光改 selection 不会影响光标所在整行的高亮——那叫 line_highlight,而选中整行(比如按 Ctrl+L)触发的是 Line Selection scope,它默认不显式定义,很多主题干脆没配,结果就是“明明选了整行,却只看到光标那点颜色”。
必须手动在当前启用的 .sublime-color-scheme 文件的 "rules" 数组里加一条:
{
"name": "Line Selection",
"scope": "line-selection",
"background": "#2d3748"
}
注意:"scope": "line-selection" 是 Sublime 识别选中整行的唯一合法 scope;"name" 字段名必须严格为 "Line Selection"(首字母大写、空格保留),否则无效。
- 别往
"globals"里塞这条规则——它只认"rules"数组里的 scope 匹配 -
background值只能是纯十六进制,如#2a5c3a;带透明度的#2a5c3a80会被静默忽略(Sublime color scheme 不支持 8 位 hex) - 改完保存,颜色立刻生效;若没变化,打开控制台(
Ctrl+`)看是否报 JSON 语法错误,常见于末尾多逗号或引号不匹配
为什么改了 selection 还看不见选中效果
不是所有“看起来像选中”的行为都走 selection 规则。比如:
- 光标停在单词上自动高亮同词,走的是
"name": "Highlight"或"name": "Find Highlight"规则,和selection无关 - 用
Ctrl+D多选时,新增的选区属于region.redish类伪 scope,实际由"region"规则控制 - 某些第三方主题(如 Material Theme)把
selection的background设成和编辑区背景色几乎一致的灰,肉眼根本分不出差别
验证当前生效的是哪条规则:把光标放在已选中文本上,按 Ctrl+Shift+P → 输入 Show Scope Name 回车,看输出里有没有 selection 或 line-selection。没有?说明你正在被别的规则覆盖。
如何安全修改配色方案文件
直接改 Packages/Color Scheme - Default/ 下的原文件风险高,且升级后会被覆盖。正确路径只有一条:
- 菜单 →
Preferences → Color Scheme,右键当前主题 →Copy to Packages/User - 打开
Packages/User/目录下的副本(文件名类似Monokai.sublime-color-scheme) - 搜索
"name": "Selection",找到对应对象,在"background"字段填入新值,例如"#3a405a" - 如果想让多选区域更醒目,顺手加上
"region"规则:{ "name": "Region", "scope": "region", "background": "#4a5568" }
文件必须保存为 .sublime-color-scheme 后缀,不能是 .txt 或 .json;内容必须是合法 JSON(无注释、引号全英文、逗号不冗余)。
不同 Sublime 版本对颜色格式的支持差异
Sublime Text 4(v4143+)强制使用 JSON 格式的 .sublime-color-scheme,旧版的 .tmTheme(XML 格式)已不被支持。但兼容性陷阱仍在:
-
rgba()和hsla()只在 v4126+ 支持;低于此版本会直接跳过整条规则 - 所有
background值必须以#开头,rgb(58, 64, 90)或red这类写法一律无效 - 旧主题迁移时,别试图把
.tmTheme文件重命名为.sublime-color-scheme—— XML 结构无法被 JSON 解析器读取
最稳的做法:始终用 #RRGGBB 格式,改完立刻用 Show Scope Name 验证 scope 是否命中,而不是靠“感觉像变了”。











