VS Code 关键字无颜色主因是语言模式未正确识别,需检查右下角语言标识并手动切换,确认Python扩展已启用,同时排查文件关联、主题配色及语义高亮设置是否关闭。

VS Code 里关键字没颜色,大概率是语言模式没识别对
打开一个 .py 文件却看到 def、if 全是灰色,不是主题问题,而是 VS Code 根本没把它当 Python 处理。右下角状态栏会显示当前语言模式(比如 “Plain Text”),点它就能手动切换。
- 点击右下角语言标识(如 “Plain Text”、“JSON”),选对应语言(如 “Python”)
- 如果列表里没有目标语言,说明缺少对应扩展:比如写 TypeScript 要装
ES7+ React/Redux/React-Native snippets或官方TypeScript and JavaScript Language Features(已内置,但可能被禁用) - 临时测试:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac),输入Change Language Mode,回车后选语言
主题开了但关键字还是灰的,检查是否关了语法高亮
极少数主题(尤其自定义或极简主题)会把关键字颜色设成和普通文本一致,看起来像“没高亮”。不是代码问题,是主题配色太克制。
- 在设置里搜
workbench.colorTheme,换一个主流主题试试,比如Default Dark+或GitHub Dark - 确认没误开
editor.semanticHighlighting的反向配置:在设置里搜它,确保值是true(语义高亮默认开启,但某些旧插件或自定义设置可能关掉) - 如果用了
Peacock或其他主题定制插件,检查它是否覆盖了textMateRules配置
自定义关键字颜色?别动 textMateRules,先看 scope 是什么
想把 async 加粗或改成紫色?直接改 textMateRules 容易翻车,因为不同语言对同一关键字的语法 scope 不同。比如 Python 的 def 是 keyword.control.python,而 JavaScript 的 function 是 storage.type.function.js。
- 把光标停在关键字上,按
Ctrl+Shift+P→ 输入Developer: Inspect Editor Tokens and Scopes,看右上角弹出的 scope 链 - 只针对最末尾那个 scope 写规则,例如:
"textMateRules": [{ "scope": "keyword.control.python", "settings": { "foreground": "#C792EA" } }] - 别一次性改一堆 scope,容易冲突;优先改
keyword、storage.type、support.function这几类
文件后缀不对或没关联,VS Code 就不触发语法解析
index 没后缀、config 是 YAML 但被当成 Plain Text——这种文件连词法分析都不走,自然没颜色。VS Code 不靠内容猜语言,靠后缀或显式声明。
- 右键文件 →
Change Language Mode选对语言,然后勾选Configure File Association for '.xxx'(比如把.env关联到Shell Script) - 对无后缀文件,在第一行加注释声明:比如
#!/usr/bin/env python3或// language=python(部分插件支持) - 检查
files.associations设置,避免全局误配:比如"*.conf": "ini"可能误伤 Nginx 配置文件
真正卡住人的往往不是怎么配颜色,而是 VS Code 压根没启动对应语言服务器——状态栏语言模式、文件关联、扩展启用状态,这三个地方漏查一个,调半天 tokenColorCustomizations 都没用。









