Sublime Text颜色方案是JSON格式的.sublime-color-scheme文件,需通过scope匹配语法作用域修改foreground等属性,配合ScopeAlways插件查准scope,并确保规则顺序合理且手动重载生效。

颜色方案文件不是 CSS,不能直接改 class 名
Sublime Text 的颜色方案是 .sublime-color-scheme 文件(JSON 格式),不是 CSS 或主题包里的 .tmTheme。新版(v4+)强制使用 JSON scheme,旧版的 plist 已不被支持。直接编辑时若误当成 CSS 写 .keyword 或 span.red,会完全失效——因为它是靠 scope 字符串匹配语法高亮作用域,不是选择器。
找到并修改对应 scope 的 foreground 颜色
字体高亮由语法作用域(如 keyword.control.python、string.quoted.double.python)决定,每个作用域可单独设 foreground(文字色)、font_style("italic" / "bold" / "bold italic")等。操作步骤:
- 用
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)打开命令面板,输入Color Scheme→ 选Convert Color Scheme to JSON(如果当前是旧 plist) - 再执行
Preferences: Color Scheme…找到当前方案路径,用Open in Editor直接编辑 - 在文件中搜索目标 scope,例如想改 Python 的
def关键字颜色,搜keyword.control.python - 添加或修改该 scope 对应的
foreground值,格式为"#RRGGBB"或"#RRGGBBAA"(带透明度)
示例片段:
{
"name": "Python def keyword",
"scope": "keyword.control.python",
"settings": {
"foreground": "#FF6B6B",
"font_style": "bold"
}
}
scope 怎么查?别猜,用插件实时看
scope 名称非常具体且嵌套深(比如 support.function.builtin.python 和 support.function.python 效果可能完全不同),手动查文档效率低还容易错。推荐装 ScopeAlways 插件(轻量无依赖)或 Developer Tools(内置):
- 把光标停在想查的代码上(如一个字符串、函数名、注释)
- 按
Ctrl+Alt+Shift+P(Windows/Linux)或Cmd+Alt+Shift+P(macOS)调出 scope 面板,顶部会显示完整作用域链 - 复制最精确的那个 scope(通常最末尾的、非泛化项),粘贴进 color scheme 文件
注意:不同语言插件注册的 scope 可能不同,同一语法元素在 Rust 和 Go 中 scope 完全不一样。
改完不生效?检查三个关键点
常见“改了但没变”问题基本集中在这三处:
- 文件保存后没刷新:改完必须
Save,且 Sublime 不自动重载 color scheme;需手动执行一次Preferences: Color Scheme…重新选一遍当前方案 - scope 被更高优先级规则覆盖:color scheme 是按数组顺序匹配,靠后的 rule 若 scope 更宽泛(如只写
keyword),会盖掉前面更具体的(如keyword.control.python)。确保你的 rule 在数组里位置合理,或加"enabled": true显式启用 - 当前视图用了其它 scheme:检查右下角状态栏是否显示你编辑的方案名;某些插件(如
Origami分屏)或侧边栏可能独立继承 scheme,需单独确认
真正难调的从来不是改哪一行,而是 scope 是否精准匹配 + rule 是否被绕过 —— 这两点漏掉一个,改十次都白搭。











