vscode本身不支持新建文件自动插入版权头,必须依赖插件(如fileheader)并正确配置fileheader.custommade、autoadd及supportfiletypes;需确保语言id识别准确、模板符号为半角、禁用格式化工具误删行为。

怎么给新文件自动加版权头?
VSCode 本身不自带“新建文件自动插入版权信息”功能,但通过 fileheader.customMade 配合插件可以稳定实现。关键不是找快捷键,而是配置好 vscode-fileheader 插件(推荐用 Document This 的替代方案 —— Auto Insert Header 或更主流的 File Header)。
常见错误是只装插件不改配置,结果按 Ctrl+Alt+I(默认快捷键)没反应;或者填了 author 却漏了 email,导致模板渲染失败。
- 安装插件后必须打开
settings.json,手动添加fileheader.customMade对象 -
fileheader.cursorMode设为true才能支持光标定位到作者/描述字段 - 模板里避免用中文冒号全角符号,否则解析失败(例如用
Author:,别用作者:)
Ctrl+Alt+I 没反应?检查这三处
这个快捷键失效通常不是插件坏了,而是配置或上下文不匹配:
- 当前文件没被识别为支持语言(比如
.js文件却以Plain Text模式打开 → 点右下角语言模式选JavaScript) -
fileheader.configObj里autoAdd设成了false,导致只响应快捷键不自动插入 - 快捷键被其他插件占用(比如
GitLens默认也用了Ctrl+Alt+I→ 在键盘快捷方式里搜fileheader确认绑定是否生效)
如何让不同项目用不同版权模板?
全局模板不够用,比如公司项目要带内部许可证编号,开源项目要 MIT 声明。直接靠工作区级 .vscode/settings.json 覆盖即可:
在项目根目录建 .vscode/settings.json,写入:
{
"fileheader.customMade": {
"Description": "XXX 系统前端组件",
"License": "Copyright © 2024 XXX Co., Ltd. All rights reserved.",
"FilePath": ""
}
}
注意:FilePath 留空才能让插件自动补全相对路径;如果填了固定值(如 "FilePath": "src/utils/"),反而会覆盖真实路径。
- 多项目混用时,优先级:工作区设置 > 用户设置 > 插件默认
- 模板变量如
${date}、${time}支持格式化,例如${date:YYYY-MM-DD} - 若需动态读取
package.json字段(如 version),得配合shell-command类插件,原生不支持
为什么保存时版权头被删了?
这是格式化工具(如 Prettier、ESLint)和文件头插件冲突的典型表现。Prettier 默认会在文件开头插入空行,而某些版本的 File Header 把版权块识别为“可删除注释”。
- 在
settings.json中关掉fileheader.deleteInvalidHeader(设为false) - Prettier 配置加
"prettier.insertPragma": false,避免它往顶部塞 pragma 注释干扰 - ESLint 若启用了
spaced-comment规则,检查是否设置了"markers": ["/"]—— 这会让 ESLint 误删/* ... */开头的版权块
真正麻烦的不是加不上,而是加上了又被删——得盯住格式化链路里每一步对首行注释的处理逻辑。











