VS Code代码高亮失效主因是语言服务未启动:先检查右下角是否显示Plain Text,点击手动切换语言模式;确认文件后缀正确、files.associations配置无误、tsconfig.json等配置文件存在;禁用新扩展排查冲突;清理语义缓存并重启进程;启用内置语言扩展,验证token作用域与主题兼容性。

VS Code 代码高亮失效,90% 不是语法解析器“坏了”,而是它压根没启动——语言模式识别错误、扩展抢占失败、语义缓存卡住,都会导致 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 不加载语义层 - 禁用所有新装扩展后仍不显示目标语言?说明核心扩展未启用:搜
@builtin javascript或@builtin python,确保状态为「已启用」
高亮突然全灰,但语言模式是对的
语言模式正确却无颜色,说明 token 生成或着色环节被阻断。不是主题问题,而是 TextMate 规则没命中,或语义高亮缓存错位。
- 按
Ctrl+Shift+P运行Developer: Inspect Editor Tokens,把光标停在不亮的async上,看 scope 链里有没有keyword.control.async.js类似项;若只有keyword,说明主题规则太简陋 - 删掉
%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 窗口**(仅重载无效) - cpptools 若报
Unable to start the native debug adapter,检查c_cpp_properties.json中compilerPath是否含中文路径或未转义空格 - Pylance 启动慢?在
settings.json加"python.languageServer": "Pylance"显式指定,避免 fallback 到 Microsoft Python Server
改了主题或升级 VS Code 后高亮乱码
乱码不是字体问题,是连字(ligatures)干扰 token 边界识别。中文标点如 『』、… 和 => 混排时,Fira Code 等字体可能把它们合并渲染,导致语法解析器切分错位。
- 先关连字:
"editor.fontLigatures": false,看高亮是否立刻恢复 - 若关闭后正常,换用
Cascadia Code PL(带 PL 后缀),它对中文标点做了宽度对齐修复 -
editor.fontFamily首项必须是等宽字体,Microsoft YaHei只能放 fallback 位,例如:"Cascadia Code PL, Microsoft YaHei, monospace" - 别在
settings.json里写"*": "python"这类全局files.associations,它会让.json文件也被 Python 解析器处理,直接崩 token 流
真正难搞的从来不是“怎么修”,而是“为什么修完还错”——比如 Volar 已接管、缓存已清、字体已换,但 interface 仍不蓝。这时候要查 Output → Vue Language Server 日志里有没有 Cannot find module 'typescript',因为 Volar 的 TS 服务依赖本地 node_modules/typescript,pnpm 环境下权限或链接异常会导致静默失败。


















