最稳妥的方法是直接修改packages/user/下的.tmtheme文件;用packagedev插件可一键生成带注释的标准模板,避免手写xml出错;修改selection等设置需在settings块内,值为十六进制字符串(如#3399ff33);改完保存后需在preferences→color scheme中重新选择主题才生效。

直接改 Packages/User/ 下的 .tmTheme 文件最稳妥,别碰 Packages/Color Scheme - Default/ 里的原始文件——更新一来就全丢。
怎么快速生成一个可编辑的 .tmTheme 文件
别手写 XML 结构,容易漏闭合标签或错用 key。PackageDev 插件能一键生成带注释的模板:
- 通过 Package Control 安装
PackageDev - 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入New Color Scheme回车 - 新标签页会打开标准
.tmTheme模板,含settings和rules骨架 - 保存为
Packages/User/MyTheme.tmTheme,路径必须是User/目录下
这个模板默认已设好 background、foreground、selection 等全局项,开箱即调。
改选中背景色(selection)为什么没反应
常见原因是改错了位置,或用了不支持的格式:
-
selection必须在<key>settings</key>块里,不是在<key>rules</key>里 - 值必须是十六进制字符串,如
#3399FF33(RGBA),不能写成3399FF33或"#3399FF33"(XML 里引号由 parser 自加) - 如果主题用了
selectionForeground,它会覆盖文字颜色;不设这项时,选中文字沿用foreground - 改完保存后无需重启,但得在
Preferences → Color Scheme里重新选一次你的主题才生效
为什么 scope 写对了,颜色还是不变
Sublime 不报错也不提示,只是静默跳过无效 rule。真正起作用的是 scope 匹配精度和顺序:
- 用
Ctrl+Shift+P→Developer: Show Scope Name查光标处完整 scope,比如source.python meta.function.python storage.type.class.python - 写
storage.type.class.python比只写storage.type更准,太宽泛(如source)会被更具体的 rule 覆盖 - rule 在
<array></array>里的顺序很重要:靠前的 rule 优先匹配,后面同 scope 的会被忽略 - 确保你改的是当前正在用的主题文件——右下角显示的语法名(如 Python)和
Preferences → Color Scheme里选中的主题名要一致
改完注释颜色,但 .env 或 .toml 还是灰的
这不是配色问题,是 Sublime 根本没把文件当对应语言解析:
- 打开一个
.env文件 →View → Syntax → Open all with current extension as…→ 选ShellScript - 同理,
.toml选TOML,.pyi选Python - 这操作会自动写入
Packages/User/Extensions.sublime-settings,永久绑定后缀与语法 - 之后再进
ShellScript.sublime-settings设"color_scheme": "Packages/User/MyTheme.tmTheme",所有.env就同步生效
scope 是静态定义的,但语法识别是动态的——配色方案再精细,也救不了没被识别的语言。











