VSCode原生代码片段可用$CURRENT_YEAR等变量拼接时间戳,但不支持补零和秒数;作者需用$1手动输入,无法自动获取git用户名;复杂需求须借助Auto Insert Header等插件。

如何用 VSCode 代码片段插入当前时间戳
VSCode 的 snippet 本身不支持运行 JavaScript 或调用系统时间,所以不能直接写 ${Date.now()} 这类表达式。但可以借助内置变量 $CURRENT_YEAR、$CURRENT_MONTH 等组合出格式化时间,这是最轻量、零依赖的方案。
-
$CURRENT_YEAR、$CURRENT_MONTH、$CURRENT_DATE、$CURRENT_HOUR、$CURRENT_MINUTE是 VSCode 原生支持的动态变量,无需插件 - 注意:没有
$CURRENT_SECOND,也不支持自定义格式(如YYYY-MM-DD HH:mm:ss),只能拼接,例如$CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE - 月份和日期默认不补零(如 2024-9-5),若需
2024-09-05,得手动加判断逻辑——但 snippet 不支持条件语句,所以实际中建议接受非补零格式,或改用插件方案
作者信息怎么填才不容易出错
硬编码作者名(如 "author": "张三")看似简单,但多人协作时容易过期或不一致。更稳妥的做法是复用 VSCode 的用户配置项,比如从 git.user.name 读取:
- VSCode snippet 不支持读取配置项,所以无法自动获取
git.user.name;必须手动维护$1占位符让用户首次输入后回填,例如:"author": "$1",→ 触发后光标跳到此处,输入一次即可 - 如果项目已统一使用
.vscode/settings.json,可配合editor.snippetSuggestions+ 自定义字段,但仍是静态值,不是“自动” - 真正自动填作者,得靠插件(如
Auto Insert Header)或 task 脚本,snippet 层面做不到
为什么推荐用插件替代纯 snippet 方案
当需要带秒数、补零、Git 用户名、文件路径、版权年份范围(如 2022–2024)时,原生 snippet 就力不从心了。这时候插件不是“锦上添花”,而是解决根本限制:
-
Auto Insert Header支持模板语法,可写{{date 'YYYY-MM-DD HH:mm:ss'}}和{{user.name}},且能按语言/路径自动触发 -
Fileheader插件允许配置全局 author,并从git config user.name读取(需开启fileheader.configObj.prologue.autoUpdate) - 插件生成的内容是普通文本,不破坏 snippet 的快捷键流程,还能配合保存时自动更新(如修改文件时刷新 last modified 时间)
- 注意:插件模板一旦设错,可能批量污染已有文件头,建议先在小范围文件测试,再启用全局
一个可用的 snippet 示例(含 fallback 机制)
下面这个 snippet 在不装插件的前提下,兼顾可读性与可维护性,适用于大多数脚本类文件(如 .py、.js):
{
"File Header": {
"prefix": "header",
"body": [
"/**",
" * @author $1",
" * @created $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE",
" */"
],
"description": "Insert basic header with author and timestamp"
}
}
要点说明:
-
$1让用户第一次触发时填作者,之后可通过Ctrl+Shift+P → Insert Snippet再次调用,光标仍停在作者位置便于修改 - 时间部分不补零,但 VSCode 会自动识别为字符串,不影响 lint 或 git diff
- 不要试图用
$TM_FILENAME拼接完整路径——它不含目录,且不同语言扩展可能覆盖该变量行为
复杂点在于:你得接受“自动”是有边界的。要么妥协于原生能力(时间格式、作者来源),要么引入插件并承担额外维护成本。没中间路线。


















