Vue代码补全失效主因是语言模式错误或Emmet未配置,需确保.vue文件识别为“Vue”模式、卸载Vetur、配置emmet.includeLanguages支持vue-html、启用snippetsPreventQuickSuggestions及tabCompletion,并检查tsconfig.json含"vue"类型。
Vue代码自动补全在VS Code里不生效,90%的情况不是插件没装,而是语言模式识别错了或Emmet没被正确触发。
你敲
按Tab没反应、
不展开、
块里
没提示——这些问题背后是几个关键配置点没对齐,不是重装插件就能解决的。
确认.
vue
文件被识别为“Vue”而非“HTML”或“Plain Text”
VS Code对
文件的处理完全依赖语言模式。右下角状态栏显示“HTML”或“Plain Text”,说明Volar根本没接管;显示“Vue”或“Vue HTML”才是正常起点。点击该标识可手动切换,但治标不治本:
检查是否已禁用
(它和
冲突,必须卸载)
确保项目根目录有
或
,否则Volar可能无法激活TS/JS语言服务
打开一个
文件后,按
运行
,在Console里搜
,看是否有报错如
让
块启用Emmet缩写(
→
)
Emmet默认只在
语言模式下激活,而
里的
块需要显式声明支持。直接改
:
注意:
是Volar为
块分配的语言ID,不是你手动写的;如果仍无效,检查是否误加了
这类冗余项,会覆盖掉
的映射。
立即学习
“
前端免费学习笔记(深入)
”;
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
启用Volar内置代码片段(
、
等)
Volar extension Pack自带片段,但默认不开启Tab触发。需手动启用:
打开
,添加
(否则片段会被智能提示压制)
确保
已开启(不是
)
输入
后按
,应生成含
的完整骨架;若只弹出函数名建议,说明
语言模式下的片段未加载
片段路径在Volar源码中为
,你也可以把自定义片段放
下(不推荐,升级易丢失)
组件名和
等指令补全失效的排查点
这类补全依赖Volar的SFC解析能力,常见断点在:
中未用
声明
,导致组件无法被模板识别
局部注册组件时用了
但没导入
,Volar会跳过索引
提示缺失,大概率是
未启用(Vue 3.4+才支持),检查
是否干扰了属性推导
重启VS Code后首次打开
文件,Volar可能延迟1–2秒才加载完成,此时补全暂不可用,属正常现象
最常被忽略的是:Volar对
的类型推导强依赖
中的
是否包含
——漏掉这一项,
、
的参数提示全挂。
v-iftemplatescriptdefineProps.vueVeturVolarjsconfig.jsontsconfig.json.vueCtrl+Shift+PDeveloper: Toggle Developer Toolsvolar"Failed to activate Volar"divhtml.vuesettings.json{
"emerald.emmet.includeLanguages": {
"vue-html": "html",
"vue": "html"
},
"[vue]": {
"editor.quickSuggestions": {
"other": true,
"comments": false,
"strings": false
}
}
}vue-html"html": "html"vue-htmlvbasevforsettings.json"editor.suggest.snippetsPreventQuickSuggestions": false"editor.tabCompletion": "on""onlySnippets"vbaseTabvueserver/src/modes/vue/veturSnippets/~/.vscode/extensions/vue.volar-*/snippets/v-modelscript setupdefineOptionsnamecomponents: { MyBtn }MyBtnv-modeldefineModelcompilerOptions.isCustomElement.vuescript setuptsconfig.json"compilerOptions.types""vue"definePropsdefineEmits