新建了一个 .env 文件,双击打开一看全是白字,右下角状态栏写着 Plain Text,一点语法高亮都没有。这不是主题坏了,是编辑器没认出这个文件属于哪种语言。

右下角那个语言模式

点状态栏上的 Plain Text,会弹出语言列表,选 Dotenv 或者 Shell Script,颜色立刻就回来了。但这只是临时指定,下回打开还是白的。想长期生效,得告诉编辑器这类后缀固定归属哪个语言。

用文件关联固定下来

设置里搜 files.associations,加一条映射,左边写通配符,右边写语言 id:

*.env 对应 dotenv    *.tpl 对应 html    *.conf 对应 nginx

这些 key 要放在 settings.json 的顶层,塞进别的对象里不生效。语言 id 写错不会报错,只会静默失效,所以填完要关掉文件再重开验证一次。

扩展负责语法,主题负责配色

Vue 文件不亮,装 Volar;React 的 JSX 不亮,内置的 TypeScript 支持就够了,别装一堆功能重复的。装完还要看它是不是在当前工作区被禁用了,全局启用但工作区禁用,一样不起作用。

还有一种情况是文件本身没后缀。双击打开一个叫 config 的文件,编辑器没有任何线索,只能按纯文本处理。给它改成带后缀的名字,或者手动指定语言,才谈得上高亮。

配色是主题管的。有的主题把注释和字符串调得几乎一个颜色,看着就像没高亮。换回 Default Dark Modern 对比一下,能立刻区分是识别问题还是配色问题。改主题只影响颜色,不会让本来没识别的语言突然有语法分析。

看着像坏了的两种情况

一是字体。editor.fontFamily 写成系统里没装的字体名,会走回退字体,某些符号显示成方框,看起来像渲染出错。二是编码。文件不是 UTF-8,中文注释后面整行变色错乱,右下角的编码点一下,选通过编码重新打开。

排查顺序建议固定下来:先看语言模式,再看扩展有没有生效,最后才怀疑主题和字体。顺序反了,很容易在白折腾半小时之后发现只是选错了语言。