直接修改 settings.json 中的 editor.tokencolorcustomizations 即可解决99%语法颜色问题,需区分 editor.tokencolorcustomizations(代码文本)与 workbench.colorcustomizations(ui元素),用 developer: inspect editor tokens and scopes 命令确认 scope,按语言加前缀如 "[python]" 避免冲突,语义高亮需依赖语言服务器且可回退 textmaterules,第三方主题可能覆盖设置需关闭其强制语法高亮开关。

直接改 settings.json 里的 editor.tokenColorCustomizations 就行,不用装插件、不碰 CSS、不换主题——99% 的语法颜色问题都卡在这一步配错 scope 或写错位置。
怎么确认你改的是语法高亮,不是 UI 颜色
很多人改了半天没效果,是因为把语法颜色和界面颜色混在一起了。VSCode 里只有两个配置项真正管颜色:
-
editor.tokenColorCustomizations:只影响代码文本本身(if、"hello"、// comment) -
workbench.colorCustomizations:只影响侧边栏、状态栏、当前行背景这些 UI 元素
如果你在 workbench.colorCustomizations 里写了 string 或 keyword,那完全无效——它根本不认识这些 token 名。
scope 怎么写才对:别猜,用命令实时看
写错 scope 是最常见失败原因。比如你认为字符串是 string,实际可能是 string.quoted.double.js(JS)或 string.quoted.single.python(Python)。靠文档或经验去记几乎必错。
正确做法:
- 把光标放在目标词上(比如一个函数名、一个双引号字符串)
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS) - 输入并执行
Developer: Inspect Editor Tokens and Scopes - 看弹出面板顶部第一个带语言后缀的 scope(如
entity.name.function.ts),优先用它
注意面板右侧的 foreground 列,显示当前生效的颜色值,改完立刻能比对是否生效。
按语言单独配色:避免 JS 和 Python 颜色互相污染
如果你在全局 editor.tokenColorCustomizations 下配色,所有语言都会套用同一套规则,容易让 Python 的 self 变成 JS 函数色,或者让 TypeScript 的类型名被误染。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
更安全的做法是语言限定:
- 写成
"[javascript]"或"[python]"这样的语言作用域前缀 - 每个语言块内再嵌套
editor.tokenColorCustomizations - 例如:
"[python]": { "editor.tokenColorCustomizations": { "textMateRules": [ { "scope": "variable.language.python", "settings": { "foreground": "#c678dd" } } ] } }
这样改 Python 的 self,JS 文件完全不受影响。
语义高亮 vs 语法高亮:什么时候该用 editor.semanticTokenColorCustomizations
基础语法高亮(textMateRules)只能识别词性(比如“这是个关键字”),而语义高亮能识别上下文含义(比如“这个 fetch 是全局函数”,“那个 user 是变量不是类”)。
启用语义高亮需两步:
- 确保对应语言扩展已启用语义高亮(如 Pylance、TypeScript 插件默认开)
- 在
settings.json中添加editor.semanticTokenColorCustomizations,用function、class、parameter等语义类型作为 key
但要注意:语义高亮依赖语言服务器,如果文件没被正确索引(比如没打开项目根目录、没装 Pylance),function 规则可能完全不触发——这时回退到 textMateRules 更可靠。
真正容易被忽略的点是:第三方主题(如 One Dark Pro、Nord)常自带完整的 tokenColorCustomizations 规则,会覆盖你的设置。如果调了半天没反应,先查主题文档,看有没有类似 "nord.enforceSyntaxHighlighting": false 的开关——关掉它,你的配置才能真正落地。










