Sublime Text 中 .vue 文件语法高亮失效需三步解决:①安装 Vue Syntax Highlight 插件并手动关联 .vue 后缀;②为 template/script/style 块分别设置 Vue Template、Vue Script、Vue Style 语法;③配置 JsPrettier 或 ESLint 支持 Vue 解析器及 Emmet 的 vue 作用域。

Vue 单文件组件(.vue)语法高亮不生效
Sublime Text 默认不识别 .vue 文件,打开后全是纯文本,标签、<script> 和 <style> 块全无颜色。这不是插件没装,而是文件关联没设对。
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 右下角状态栏点击当前语法名称(比如 “Plain Text”),选 Open all with current extension as… → Vue
- 若列表里没有 “Vue”,说明还没装支持包——装
Vue Syntax Highlight(Package Control 里搜这个名字,别选错成 “Vuejs” 或 “Vuejs2”) - 装完重启 Sublime,再打开一个
.vue文件,手动触发一次语法切换,之后所有同名文件会自动记住 - 注意:某些旧版插件把语法叫 “Vue Component”,不是 “Vue” —— 名字不对就无效
template 中 v-if/v-for 指令没高亮或报错提示
高亮能显示标签结构,但 Vue 特有指令如 v-if、v-for、@click 还是灰的,甚至被当成普通属性标黄警告。这是因为默认 HTML 语法无法识别 Vue 指令,得切到专用语法。
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 确保已安装
Vue Syntax Highlight(不是Vuejs)——后者只支持老版本 Vue 2 的部分语法,对v-model:value、#default插槽等现代写法识别弱 - 在
.vue文件中,确认<template>块内语法是 Vue Template(右键 → Set Syntax → Vue → Vue Template),不是 “HTML” 或 “Vue Component” - 如果用了
<script setup>,<script>块必须设为 Vue Script (TypeScript) 或 Vue Script (JavaScript),否则defineProps、ref等不会高亮
保存 .vue 文件后不自动格式化
Sublime 本身不带格式化能力,即使装了 Prettier 或 ESLint 插件,对 .vue 文件也常失效——因为配置没覆盖到 vue 类型,或者解析器没指定 vue-eslint-parser。
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 用
JsPrettier插件时,在用户配置里加:"auto_format_on_save": true,<br>"allow_inline_js": true,<br>"additional_cli_args": {<br> "--parser": "vue",<br> "--vue-html-indent": "2"<br>} - 用
SublimeLinter-eslint时,确保项目根目录有.eslintrc.js,且内容包含parser: 'vue-eslint-parser'和extends: ['plugin:vue/vue3-essential'] - 别依赖全局安装的 Prettier:Sublime 调用的是它自己找的可执行文件路径,最好用
npm install --save-dev prettier @prettier/plugin-vue锁定本地版本
Emmet 在 <template> 里缩写不展开
敲 ul>li*3 按 Tab 没反应,或者展开成 HTML 而非带 Vue 指令的结构(比如没自动加 v-for)。这是 Emmet 的语法上下文没匹配上。
实操建议:
立即学习“前端免费学习笔记(深入)”;
- 确认当前光标在
<template>块内,且右下角语法是 Vue Template(不是 HTML) - 在用户配置中加:
"emmet_syntax_scopes": {<br> "vue": ["text.html.vue"]<br>},其中text.html.vue是Vue Syntax Highlight插件注册的实际 scope 名(可在控制台运行view.scope_name(view.sel()[0].begin())验证) - 如果想让
div@click展开成<div @click=""></div>,需额外装Emmet Vue插件,并禁用默认 HTML 的 Emmet 规则









