VSCode 中文界面不影响代码高亮,真正起作用的是主题和 editor.tokenColorCustomizations 配置;生效前提是主题未覆盖该配置、scope 名准确且大小写正确,需用 Developer: Inspect Editor Tokens and Scopes 获取真实 scope。

VSCode 中文界面本身不影响代码高亮,真正起作用的是主题(Theme)和 editor.tokenColorCustomizations 配置 —— 但中文用户常因忽略作用域命名规则、误改 UI 颜色项、或被第三方主题覆盖而白忙活。
为什么改了 editor.tokenColorCustomizations 没生效?
这不是 bug,而是 VSCode 主题系统的优先级逻辑在起作用:
- 当前启用的主题(如
One Dark Pro)若自带tokenColors定义,会完全覆盖你settings.json里写的editor.tokenColorCustomizations,尤其当它声明了"semanticHighlighting": true时 -
editor.tokenColorCustomizations只对“语法作用域(scope)”生效,不认中文描述(比如不能写"字符串": "#ff0000"),必须用英文 scope 名,例如string.quoted.double.js - 中文界面只是把菜单/按钮翻译成中文,
settings.json和 scope 名仍严格使用英文,写错大小写或拼写(如comment写成comments)直接失效
怎么精准拿到你要改的 scope 名?
别猜,也别搜“vscode 修改字符串颜色”,直接定位:
- 按
Ctrl+Shift+P打开命令面板,输入并执行Developer: Inspect Editor Tokens and Scopes - 光标移到你想调色的代码上(比如一个 JS 字符串
"hello"),看右下角弹出的浮层,或打开控制台(Ctrl+Shift+I)查看实时 scope 链 - 典型结果类似:
string.quoted.double.js - source.js,其中string.quoted.double.js就是你要配的 key - 想只改 TypeScript 的字符串?用
string.quoted.double.ts;想全语言统一?用更宽泛的string(但会影响 JSON、CSS 等里的字符串)
editor.tokenColorCustomizations 正确写法示例
以下配置加到 settings.json 顶层即可,注意结构和引号:
"editor.tokenColorCustomizations": {
"comments": { "foreground": "#888" },
"strings": { "foreground": "#2196F3" },
"keywords": { "foreground": "#E91E63" },
"functions": { "foreground": "#673AB7" }
}
- 这些 key(
comments、strings)是通用别名,VSCode 内部会映射到对应 scope,适合快速调整;但精度不如直接写 scope 名 - 如果用了深色主题,避免纯白
"#FFFFFF",建议加 alpha,如"#FFFFFFA0",否则注释文字在暗背景上太刺眼 - 修改后不生效?先临时切换回
Default Dark+主题测试,排除第三方主题干扰
中文注释高亮特别注意
中文注释和英文注释共用同一个 scope(如 comment.line.double-slash.js),但部分语言扩展(如 Python 的 Pylance)可能额外注入语义 token,导致中文注释颜色被覆盖:
- 确保
"editor.semanticHighlighting": true(默认开启),否则语义层颜色不会加载 - 如果发现中文注释颜色异常淡,尝试显式覆盖:
"comment": { "foreground": "#606060" } - 某些插件(如
TODO Highlight)会叠加高亮,和注释颜色冲突,可关掉它的todo.highlight.enable单独排查
最常被跳过的环节:改完 editor.tokenColorCustomizations 后没确认当前主题是否禁用了自定义。很多“护眼主题”会硬编码所有 token 颜色,连 settings.json 的入口都屏蔽了——这时候只能换主题,或去该主题的 GitHub 提 issue。











