高亮失效主因是语言服务未启动:先点击右下角强制切换语言模式,检查文件后缀与files.associations配置,确认tsconfig.json等存在,禁用新扩展排查冲突,清理语义缓存并重启进程,启用内置语言扩展,再用inspect editor tokens诊断token作用域。

高亮失效不是语法解析器“坏了”,而是它压根没启动——语言模式识别错误、扩展抢占失败、语义缓存卡住,都会导致 const、def、struct 全白,连括号匹配都消失。
右下角显示 Plain Text 怎么办
这是最常见也最容易被忽略的起点。VS Code 不靠文件内容猜语言,只看后缀 + files.associations 配置 + 手动切换结果。一旦显示 Plain Text,整个语法高亮链就断了。
- 点击右下角语言标签(哪怕它显示为空白),输入
c或vue或typescript回车,强制绑定 - 检查文件后缀是否拼错:
.jss≠.js,.pyw要在settings.json中显式关联为python - 若刚克隆项目,先确认根目录有
tsconfig.json或jsconfig.json(空文件也行),否则Volar/Pylance/cpptools不加载语义层
语言模式对但代码全灰
语言模式正确却无颜色,说明 token 生成或着色环节被阻断。不是主题问题,而是 TextMate 规则没命中,或语义高亮缓存错位。
- 删掉
%APPDATA%\Code\Cache\semantic-tokens\(Windows)或$HOME/.vscode/Cache/semantic-tokens/(macOS/Linux),然后完全退出 VS Code 进程再重开 - 检查
settings.json是否被插件注入空的"editor.tokenColorCustomizations": {}——Bracket Pair Colorizer等 UI 插件常偷偷写这个,直接删掉整段 - 临时关语义高亮验证:
"editor.semanticHighlighting.enabled": false,如果此时基础关键字恢复颜色,说明是语义层和主题不兼容
Volar / Pylance / cpptools 启动失败但不报错
这些语言服务器静默降级时,VS Code 仍显示 Vue 或 Python,但实际只走基础语法(TextMate),defineProps 不跳转、from typing import 不提示、#include 不变橙色——全是“假高亮”。
- 打开
Output面板 → 切换到Log (Extension Host),搜索failed to activate或language server crashed -
Volar必须开启Take Over Mode:执行命令Volar: Take Over Mode,然后关闭并重新打开整个 VS Code 窗口(仅重载无效) - 确保核心扩展已启用:搜
@builtin javascript或@builtin python,确认状态为「已启用」
大文件高亮突然消失(尤其 JSON)
VS Code 右下角显示 Plain Text 而非 JSON,本质是语言服务主动放弃解析——不是卡住,而是直接拒识。当文件超过 files.maxMemoryForLargeFilesMB 默认值(通常为 40)时,内置 json-language-features 会跳过语法解析。
- 修改设置:
Preferences: Open Settings (JSON)→ 搜索files.maxMemoryForLargeFilesMB→ 设为大于文件 MB 数的值(如 32MB 文件设为 64)→ 重启编辑器 - 禁用
json-language-features反而能恢复基础高亮:Ctrl+Shift+P →Extensions: Show Built-in Extensions→ 搜索并禁用该扩展 → 再按Ctrl+K Ctrl+M输入json强制切回语言模式 - 避免
files.associations把.json映射到jsonc——jsonc解析器更重,对大文件雪上加霜
真正难排查的,是那些不报错、不弹窗、也不改右下角语言标识的静默失效——比如 files.associations 里一条错配的 "*.config.js": "jsonc",或某个主题漏写了 support.type.object.js 的着色规则。这种问题必须用 Developer: Inspect Editor Tokens and Scopes 去点开每个词看真实 scope,而不是凭感觉调主题或重装插件。











