${update}不随保存自动更新,因插件设计仅在手动执行“file header: update file header”命令时才刷新;需在快捷键设置中为其绑定如ctrl+alt+u的组合键,且python模板须顶格、避免混用${date}/${datetime}。

为什么 ${update} 不随保存自动变
因为插件设计上就不是“每次保存都刷新 ${update}”,而是仅在你手动执行 File Header: Update File Header 命令时才写入当前时间。这不是 bug,是明确的行为约定。默认没快捷键,不手动触发,它永远停在第一次更新的时间点。
怎么给 ${update} 绑快捷键(推荐做法)
进 VSCode 的 Keyboard Shortcuts(Ctrl+K Ctrl+S),搜索 File Header: Update File Header,右键选 Change Keybinding,设成 Ctrl+Alt+U(或你喜欢的组合)。之后只要按一下,${update} 就会覆盖为当前时间——干净、可控、跨语言一致。
想保存即更新?别硬改插件逻辑
有人试图关掉插件默认行为,再配 editor.codeActionsOnSave + 自定义脚本实现“保存即更新”,但这样会:
- 丢失对多语言注释语法的自动适配(比如 Python 顶格、JS 用 //)
- ${update} 可能被插在错误位置,甚至破坏缩进(尤其 Python)
- 和 Prettier/ESLint 的 formatOnSave 冲突,导致光标跳、折叠状态丢
真正稳定的做法,是接受“更新时间需显式触发”这个前提,把 Ctrl+Alt+U 养成肌肉记忆。
Python 模板顶格这事真不能漏
如果你在 fileheader.customTemplates.python 里写的模板某行开头有空格或 Tab,插件会原样贴到文件最顶上,整个代码块右移一格,直接报 IndentationError。检查方法很简单:打开一个新 .py 文件,按 Ctrl+Alt+I 插入头,看第一行是不是紧贴左边边缘。不是?那就回 settings.json 把模板里所有行前面的空格删干净。
最易被忽略的其实是模板里混用 ${date} 和 ${datetime}:前者只输出日期(2026-05-22),后者带时间(2026-05-22 13:38:45)。而 ${update} 默认用的是 ${datetime},如果模板里写成 "LastEditTime": "${date}",时间部分就永远为空。











