应安装Vetur(Vue 2)或Volar(Vue 3)扩展,二者不可共存;Volar需检查volar.ignoreProjectName配置、jsconfig.json/tsconfig.json存在性及lang值是否匹配语法(如sass≠scss),并注意主题与嵌入式语法限制。

Vue SFC 里 <style> 块不识别 lang="less" 怎么办
VSCode 默认只对 <style> 块做基础 CSS 高亮,加了 lang="less" 或 lang="scss" 后依然显示为普通 CSS —— 这不是你配置错了,是 VSCode 本身没内置 Vue 单文件组件的预处理器语言映射。
解决方法很简单:装一个靠谱的语法支持扩展。最常用且维护活跃的是 Vetur(Vue 2)或 Volar(Vue 3),但注意二者不能共存,否则高亮会冲突甚至失效。
- Vue 2 项目用
Vetur,安装后默认就支持lang="less"、lang="scss"的语法高亮和基础校验 - Vue 3 项目必须用
Volar,它原生支持lang属性识别,且比 Vetur 更准确(比如能正确处理lang="postcss"或自定义lang) - 如果已装了 Vetur 又想试 Volar,务必先禁用/卸载 Vetur,否则
<style lang="less">可能被当成纯 CSS 处理
为什么装了 Volar 还是没高亮?检查这三点
常见假性“不生效”,其实卡在配置或路径上:
-
volar.ignoreProjectName如果设成了项目名,而你的工作区名字不匹配,Volar 会跳过整个文件夹 —— 直接删掉这条配置最省事 - 项目根目录下没有
tsconfig.json或jsconfig.json,Volar 可能无法激活(尤其纯 JS 的 Vue 3 项目,补一个空的jsconfig.json就行) -
<style>标签写了lang="sass",但实际用的是缩进语法(.sass),而 VSCode 默认只给lang="scss"提供高亮;想支持 .sass 语法,得额外装Sass扩展并手动关联.sass文件类型
lang="less" 写对了,但颜色还是灰的?可能是主题或嵌入限制
即使语法识别成功,高亮也可能看起来“没反应”—— 这通常不是插件问题,而是 VSCode 主题或嵌入式语法的渲染边界导致的。
立即学习“前端免费学习笔记(深入)”;
- 某些轻量主题(如 Default Light+)对嵌套语言支持弱,换用
One Dark Pro或Material Theme能立刻看出区别 - VSCode 对嵌入式语言(比如在 Vue 里嵌 LESS)的 token 划分有上限,默认只解析前 500 行;如果
<style>块超长,后面部分会退化为普通文本 —— 拆成多个<style>块或抽离到外部文件更稳妥 - LESS 特有语法如
@mixin、.foo() {}在 Volar 下能高亮,但 Vetur 对嵌套规则支持略弱,比如&:hover里的&可能不着色
不想装扩展?临时方案:手动关联文件类型
极简场景下(比如只看几个文件,不写编译逻辑),可以绕过插件,靠 VSCode 自身的文件关联强行指定语法:
- 打开任意一个
.vue文件,在右下角状态栏点击当前语言模式(比如显示 “Vue”) - 选 “Configure File Association for ‘vue’” → 输入
vue,选 “Vue”(这是基础 Vue 支持) - 再点一次右下角语言模式 → 选 “Configure Language Specific Settings…” → 在弹出的
settings.json片段里加:
"vue": {
"editor.defaultFormatter": "Vue.volar"
}
但这只是告诉编辑器“用 Volar 格式化”,不解决高亮;真正起作用的是在同个设置里加:
"files.associations": {
"*.vue": "vue",
"*.less": "less"
}
不过这个只影响文件级关联,对 <style lang="less"> 块内嵌语法无效 —— 所以真要可靠高亮,还是得靠 Volar 或 Vetur。
最常被忽略的一点:Volar 的语言服务器启动有延迟,刚打开项目时可能要等 2–3 秒才完成语法注入,别急着关掉重装。

















