vs code代码无颜色通常是语言模式识别错误或token颜色配置被清空所致;先检查右下角语言模式是否正确,再确认settings.json中editor.tokencolorcustomizations未被设为空对象,最后用inspect editor tokens验证scope匹配。

VS Code 为什么代码没颜色?先看 language mode 对不对
代码没颜色,八成不是配色方案问题,而是 VS Code 根本没认出这是什么语言。右下角状态栏里显示的 Plain Text 或 Unknown 就是铁证。
- 点击右下角语言标识(比如写着
Plain Text的地方),选对语言,如JavaScript、Python、Markdown - 如果文件后缀名不标准(比如
.conf、.tpl),手动选一次后点「Save as Language Mode」,下次自动匹配 - 某些自定义后缀(如
.vue)需要装对应扩展,否则即使选了Vue,语法高亮也不完整
settings.json 里关掉了 editor.tokenColorCustomizations 会导致颜色失效
有人为“统一风格”在 settings.json 里清空或覆盖了 token 颜色配置,结果所有关键字、字符串、注释全变成同一种灰——这不是主题坏了,是你亲手关掉了高亮开关。
- 打开设置(
Ctrl+,),搜tokenColorCustomizations,点「在 settings.json 中编辑」 - 检查有没有类似
"editor.tokenColorCustomizations": {}或"textMateRules": []这种空配置,删掉整段即可恢复默认高亮 - 想微调颜色?别清空,只改需要的部分,例如:
"editor.tokenColorCustomizations": { "textMateRules": [ { "scope": "keyword", "settings": { "foreground": "#ff6b6b" } } ] }
装了插件但颜色还是不对,可能是 semanticHighlighting 冲突
TS/JS 项目里,typescript.preferences.semanticHighlighting 和某些旧插件(如老牌 JavaScript (ES6) code snippets)会抢着染色,导致函数名变蓝、参数变红,但实际语义完全错乱。
- 在设置里搜
semantic highlighting,确认typescript.preferences.semanticHighlighting是true(推荐开启) - 如果用了非官方 JS/TS 插件(尤其是标着 “legacy” 或 “syntax only” 的),直接禁用——VS Code 内置的 TS 服务已足够强
- 重启窗口(
Developer: Reload Window),别只刷新编辑器,语义高亮要重载语言服务才生效
自定义主题时,scope 写错一个字母就全白
想换主题或改颜色?别直接抄网上片段。VS Code 的语法高亮靠 TextMate scope 匹配,support.function 和 support.function.js 是两码事,写错就匹配不上。
- 用
Developer: Inspect Editor Tokens and Scopes(快捷键Ctrl+Shift+P输入调出),把光标停在目标代码上,看真实 scope 名 - 别信博客里“通用 scope 列表”,不同语言、不同插件输出的 scope 差异很大,比如 Vue 模板里的
entity.name.tag.vue在纯 HTML 里根本不存在 - 修改
workbench.colorCustomizations只影响 UI 元素(侧边栏、标题栏),不影响代码本身颜色——那是tokenColorCustomizations的地盘
Ctrl+Shift+P 调出 scope 检查器,基本就定位了。










