最稳妥的禁用语法高亮方式是在 editor.tokencolorcustomizations 中仅配置 textmaterules,将 comment、string、keyword、variable、support.function 等关键 scope 的 foreground 统一设为同一色值,并关闭 typescript/javascript.semantichighlighting,最后重载窗口。

不能直接“禁用代码颜色”,但可以彻底清空语法高亮规则,让所有 token 变成单一颜色——这比关掉高亮更可控,也比换主题更干净。
为什么 editor.tokenColorCustomizations 设为空对象会失效
很多人在 settings.json 里写 "editor.tokenColorCustomizations": {},以为这样就关掉了颜色。实际结果是:代码依然五颜六色,甚至更乱。这是因为 VS Code 对空对象的处理是「忽略」,不是「重置」;它会继续沿用当前主题定义的语法着色规则。
- 真正生效的方式是显式覆盖全部关键 scope,或删掉整段配置
- 若你只想让关键字、字符串、注释都变成灰色,必须写明每类 token 的
foreground - 空对象 +
"textMateRules": []仍可能被主题 fallback,不推荐
用 textMateRules 强制统一 foreground 颜色
最稳妥的做法,是在 editor.tokenColorCustomizations 中只保留 textMateRules,并把常用语法元素设为同一色值。例如:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
"editor.tokenColorCustomizations": {
"textMateRules": [
{ "scope": "comment", "settings": { "foreground": "#888" } },
{ "scope": "string", "settings": { "foreground": "#888" } },
{ "scope": "keyword", "settings": { "foreground": "#888" } },
{ "scope": "variable", "settings": { "foreground": "#888" } },
{ "scope": "support.function", "settings": { "foreground": "#888" } }
]
}
- scope 名称必须准确,
support.function和support.function.js不等价 - 建议先用
Developer: Inspect Editor Tokens and Scopes(Ctrl+Shift+P)确认目标词的真实 scope - 别漏掉
constant.numeric、entity.name.function这类高频 scope,否则数字或函数名仍带颜色
禁用 semanticHighlighting 才算真正“去语义”
即使 token 颜色统一了,TypeScript/JavaScript 文件里函数名、参数仍可能因语义高亮(semantic highlighting)变色。这是独立于 TextMate 的另一层染色逻辑。
- 在设置中搜
typescript.preferences.semanticHighlighting,设为false - 同理检查
javascript.preferences.semanticHighlighting - 改完必须执行
Developer: Reload Window,否则语言服务缓存未刷新 - 注意:禁用后,
const和let可能看起来一样,但这是预期行为
别忘了 language mode 和主题本身的干扰
代码没颜色,90% 不是配色问题,而是 VS Code 根本没识别出语言类型,或者主题压根没提供语法支持。
- 右下角点开语言模式,确认不是
Plain Text或Unknown;错选会导致整个 token 系统不触发 - 临时切回
Default Light+或Default Dark+测试:如果颜色恢复,说明你当前主题缺失tokenColorCustomizations定义 - 某些极简主题(如 Empty Theme)默认不声明任何语法色,此时你的
textMateRules才真正起主导作用 - 远程开发(SSH/WSL)时,确保主题已同步到远程环境,本地设置对远程终端无效
真正麻烦的不是写几行 JSON,而是得同时盯住 language mode 是否正确、theme 是否支持 token、semanticHighlighting 是否关闭、以及 scope 名称是否拼对——少一个,颜色就还在那儿,不动声色地干扰你。










