语法高亮失效八成是配置错误而非插件故障:先确认右下角语言模式为vue,再检查files.associations是否误配(如"*.vue": "html")、editor.semantichighlighting是否开启、vue.preferences.usevolarforvue3是否为true,并用inspect工具验证token scope。

语法高亮失效,八成不是插件“坏了”,而是某个设置项悄悄覆盖了语言服务启动条件、token作用域或主题映射链路——尤其当右下角语言模式显示正确却依然全灰时,问题一定出在 settings.json 里那些看似无害的配置上。
检查 files.associations 是否误绑 languageId
这是最隐蔽也最致命的配置错误:VS Code 完全不看文件内容,只按 files.associations 的键值对决定用哪个解析器。一旦写错,高亮直接归零,且不报任何错误。
-
"*.vue": "html"会让 Volar 完全不加载,<script setup></script>和defineProps全部变白 -
"*.ts": "javascript"会跳过 TypeScript 语义层,interface、as const等关键词失去识别 - Linux/macOS 下
"*.JS": "javascript"必须单独加,大小写敏感,否则 .JS 文件永远是 Plain Text - 改完必须关闭文件再重开,
Developer: Reload Window对已打开文件无效
确认 editor.tokenColorCustomizations 没覆盖错 scope
自定义颜色本身不会导致高亮消失,但若 scope 名称拼错、大小写不符,或匹配到空 token,就会让整类语法“隐身”。Volar、Vetur、TypeScript 插件生成的 scope 完全不同,不能混用。
- 光标停在
v-if上,执行Developer: Inspect Editor Tokens and Scopes,看输出里是否含meta.directive.vue - 配置中写
{"scope": ["meta.directive.vue"], "settings": {"foreground": "#c792ea"}}才生效;写成keyword.directive或vue.directive都无效 - 如果 inspect 工具显示 scope 是
support.function.define.vue(Volar),而你配的是keyword,那defineProps就永远不会着色
排查 vue.preferences.useVolarForVue3 类开关是否被覆盖
这类布尔型偏好设置常被工作区级 .vscode/settings.json 覆盖全局设置,且 VS Code 不提示冲突。Volar 在 Vue 3 项目中默认不接管 <script setup></script>,除非显式开启。
- 检查当前工作区是否写了
"vue.preferences.useVolarForVue3": false—— 这会强制降级回 Vetur 或基础 HTML 解析 - 多个 Vue 相关插件共存时(如 Vetur + Volar),该配置若缺失或为
false,会导致defineProps不跳转、ref不提示、整个<script></script>块灰白 - 禁用 Vetur 后,该配置仍需设为
true,否则 Volar 不自动激活语义层
验证 editor.semanticHighlighting 是否被意外关闭
这个开关控制语义高亮(即类型、函数、变量等基于语言服务器的着色),和基础 TextMate 语法高亮是两套机制。它默认开启,但可能被主题、插件或手动配置关掉。
- 在设置搜索框输入
semanticHighlighting,确认editor.semanticHighlighting为true - 某些轻量主题(如 Minimal Theme)会主动设为
false以提升性能,结果就是关键字有颜色,但const foo: string中的string和foo全部灰白 - 该设置支持语言粒度,例如
"[typescript]": { "editor.semanticHighlighting": true },若只配了javascript而没配typescript,.ts 文件就只有基础高亮
真正卡住高亮的,往往不是插件本身,而是某条配置像一根细针,刚好扎在语言服务启动、token 分发或主题渲染的任一环节——它不报错,不弹窗,只让颜色静默消失。动手前先开 Developer: Inspect Editor Tokens and Scopes,看到真实 scope,才好对症改配置。











