VSCode原生不支持新建文件即自动填充模板,所有“一键生成”效果均依赖User Snippets(需已打开对应语言文件后输入prefix+Tab)或插件(如vscode-fileheader,须重启、配置路径、文件无注释才生效)。

VSCode 本身不支持“新建文件即自动填充模板”——这是原生限制,不是你配置错了。所有看似“新建就带内容”的效果,要么靠插件监听文件创建事件,要么靠你在已打开的文件里手动触发代码片段(snippet)。选错路径,就会卡在“右键新建.vue,结果还是空文件”这一步。
为什么 prefix 在新建空白文件里不生效
VSCode 的 User Snippets 只在编辑器已有语言上下文时才响应输入。它不监听“文件创建”,只监听“你在当前语言模式下敲了 prefix 后按 Tab”。常见失效点:
- 新建
.vue文件后,右下角语言模式显示为Plain Text(没切到Vue)→ 手动点击切换 -
vue.json里写了"scope": "html",但实际需要的是"scope": "vue" - 装了 Volar 但被禁用,或没重启 VSCode →
scope: "vue"根本不匹配 - 写了
"prefix": "vue",但新建完文件没主动输入vue就等内容弹出来 → 它不会自己蹦
想真·新建即有模板?用 vscode-fileheader 插件
这个插件监听 onDidCreateFiles 事件,在文件保存前注入头信息,适合团队统一规范。但它有硬性前提:
- 安装后必须重启 VSCode(否则钩子注册失败)
- 默认只对
src/下文件生效;要全局启用,改配置:fileheader.configObj.createFileTime设为true,fileheader.configObj.prohibitAutoAdd设为false - 只要文件已有任何注释(哪怕只有
//或/* */),它就跳过 → 检查是否生效,打开开发者工具(Ctrl+Shift+P→Developer: Toggle Developer Tools),看控制台有没有skip: has comment
vue.json 模板里 script setup 怎么写才不报错
很多模板抄来就跑不起来,核心是 export default 和 <script setup> 不能共存。真实可用的结构是:
{
"Vue 3 script setup": {
"prefix": "vue3",
"scope": "vue",
"body": [
"<template>",
" <div>$1</div>",
"</template>",
"",
"<script setup>",
"import { ref } from 'vue'",
"",
"const $2 = ref('')",
"</script>",
"",
"<style scoped>",
"$0",
"</style>"
],
"description": "Vue 3 script setup 基础模板"
}
}注意点:
-
body中换行必须用空字符串"",不是\n - 光标占位符用
$1、$2、$0,别写成${1} -
<script setup>模板里不能出现export default,否则运行时报Component is missing template or render function - 缩进风格(空格 or tab)必须和项目
Prettier配置一致,否则保存时被自动删掉
真正难的不是写模板,而是让模板在正确时机、正确上下文、正确语言模式下触发。很多人反复重装插件、改配置,却漏掉了右下角那个小小的语言模式切换按钮——它才是开关。


















