Sublime Text的color-scheme是JSON主题文件,应复制内置方案至User目录修改,避免升级覆盖;关键修改在globals和rules中按scope精准调整,注意JSON语法、后缀名及重启生效。
Sublime Text 的代码高亮颜色方案(color-scheme)本质是 JSON 格式的主题文件,控制语法着色、UI 元素、光标、选区等所有视觉样式。直接修改内置方案不推荐,正确做法是复制一份后编辑——否则升级 Sublime 后会被覆盖。
打开 Preferences → Color Scheme…,看到当前路径类似:Monokai.sublime-color-scheme 或 Breakers/Spacegray.sublime-color-scheme。这个路径对应实际文件位置:
~/Library/Application Support/Sublime Text/Packages/Color Scheme - Default/Monokai.sublime-color-scheme
%APPDATA%\Sublime Text\Packages\Color Scheme - Default\Monokai.sublime-color-scheme
~/.config/sublime-text/Packages/Color Scheme - Default/Monokai.sublime-color-scheme
复制该文件到 User/ 目录下(路径同上,把 Color Scheme - Default 换成 User),重命名为例如 MyMonokai.sublime-color-scheme。之后在 Preferences → Color Scheme… 里就能选中它。
sublime-color-scheme 是分层结构:顶层定义全局样式(globals),底层按 scope(如 string、comment、keyword)逐项覆盖。不要试图改 foreground 或 background 单独值——它们必须放在 globals 下才生效。
"scope": "comment",加 "foreground": "#6a737d"
"scope": "string",加 "foreground": "#e06c75" 和可选 "font_style": "italic"
function、return):找 "scope": "keyword",删掉或注释掉 "font_style": "italic"
globals 中加 "line_number_background": "#282c34"
Scope 名称不能靠猜,用 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(macOS)→ 输入 Inspect Scope,点击代码任意位置即可看到当前 token 的完整 scope 链,例如:source.python meta.function.python storage.type.function.python。优先匹配最具体的 scope。
改完保存后不生效,大概率卡在这几个地方:
.sublime-color-scheme 后缀,Sublime 会直接忽略jsonlint.com)粘贴内容检查tmTheme(旧版 XML 格式),而 Su
blime Text 4 只支持 .sublime-color-scheme(JSON);老主题需用官方转换工具或手动重写BracketHighlighter)会叠加自己的高亮规则,优先级可能高于 color-scheme,需单独配置其 bracket_styles
{
"name": "MyMonokai",
"author": "me",
"variables": {
"bg": "#282c34",
"fg": "#abb2bf"
},
"globals": {
"background": "var(bg)",
"foreground": "var(fg)",
"line_number_background": "#21252b",
"selection": "#3e4451"
},
"rules": [
{
"scope": "comment",
"foreground": "#6a737d",
"font_style": "italic"
},
{
"scope": "string",
"foreground": "#e06c75"
}
]
}真正麻烦的不是改颜色,而是 scope 匹配顺序和继承关系——同一段代码可能被多个 rule 捕获,最终生效的是最后一条匹配成功的。调试时建议每次只改一个 scope,保存后立刻验证,避免叠加干扰。
# linux
# mac
# 工具
# app
# windows
# json
# js
# sublime
# python
# word
# ai