vscode不原生支持新建.vue文件即填充模板,必须依赖snippets机制;关键在于scope必须设为"vue"、volar启用takeovermode、语言模式确认为vue,且prefix/body配置完整,否则无法触发。

VSCode 不能靠装几个插件就自动给你新建一个带 <template></template>、<script setup></script>、<style scoped></style> 的 .vue 文件——它压根不提供“新建文件时填充模板”这个能力,所有所谓“一键生成”,底层全靠用户代码片段(snippets)驱动。
为什么输入 vue 不触发模板补全
最常见原因是 scope 配错或插件没接管语言服务:
-
scope必须设为"vue",不是"html"、"javascript"或留空;写成"vue-html"或"vue-sfc"也不行,VS Code 只认"vue" - Volar 插件未启用
volar.takeOverMode,或仍残留 Vetur(二者冲突),会导致 VS Code 把 .vue 文件当 HTML 解析,snippet 就不会激活 - 新建的文件没被识别为 Vue 语言模式:右下角状态栏应显示 “Vue”,若显示 “HTML”,手动点击切换,或在
settings.json加上"files.associations": { "*.vue": "vue" }
vue.code-snippets 文件里必须写的三要素
缺一不可,否则按 Tab 没反应:
使用 `@ainative/vue-sdk` 为 Vue 3 应用添加 AI 聊天功能。适用于以下场景:(1) 安装 `@ainative/vue-sdk`,(2) 在 Vue 组件中使用 `useChat` 组合式函数,(3) 提供……
-
"prefix": "vue"—— 触发关键词,输入后按 Tab 展开 -
"scope": "vue"—— 唯一决定“在哪种文件里生效”,只对语言模式为 Vue 的文件起作用 -
"body"数组 —— 每行一个字符串,支持$1、$2光标占位符;注意空行用"",不是" "或漏掉
示例最小可用结构:
{
"Basic Vue SFC": {
"scope": "vue",
"prefix": "vue",
"body": [
"<template>",
" <div>$1</div>",
"</template>",
"",
"<script setup>",
"$2",
"</script>",
"",
"<style scoped>",
"$3",
"</style>"
]
}
}
Vue 2 和 Vue 3 模板不能混用同一个 prefix
如果你项目里同时存在两种语法,硬塞进一个 vue snippet 会出问题:
- Vue 2 需要
export default { data() { ... } },而 Vue 3<script setup></script>里不能写这个 - 直接复用同一 prefix,容易在 Vue 3 项目里误补出 Vue 2 结构,TS 类型推导立刻报错
- 推荐分设前缀:
"prefix": "vue2"和"prefix": "vue3",或更明确的"vue-options"/"vue-setup" - 多人协作时,把 snippets 放进项目级
.vscode/vetur.code-snippets(注意路径名不是vue.code-snippets),避免全局配置污染
真正卡住人的从来不是怎么写 JSON,而是 scope 写对了、插件启用了、语言模式也切对了,结果新建文件时还是没提示——这时候大概率是 VS Code 缓存了旧的语言服务状态,关掉窗口重开一次,比查半天配置管用。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










