必须用Python插件实现动态时间插入,因Sublime原生snippet的仅输出创建时静态时间,不支持实时更新;推荐新建insert_datetime.py插件并绑定快捷键,调用datetime.now()生成可定制格式的当前时间。

如何用 Sublime Text 的 snippet 插入动态当前时间
Sublime Text 的 snippet 本身不支持运行 JavaScript 或 Python 来获取实时时间,<date></date> 占位符只输出 snippet 创建时的静态时间,不是你想要的“每次触发都更新”。真要插入当前日期时间,得绕过纯 snippet,改用插件或自定义命令。
推荐方案:用 Python 插件 + 快捷键绑定(最可靠)
Sublime 支持在 Packages/User/ 下写 .py 插件,调用 datetime.now() 生成实时字符串。这是目前唯一能稳定、跨平台、可格式化控制的方式。
操作步骤:
- 菜单栏 → Tools → Developer → New Plugin…,保存为
insert_datetime.py到Packages/User/ - 替换默认内容为以下代码(支持 ISO 格式和中文格式双选项):
import sublime
import sublime_plugin
from datetime import datetime
<p>class InsertDatetimeCommand(sublime_plugin.TextCommand):
def run(self, edit):</p><h1>可按需修改格式,例如 '%Y-%m-%d %H:%M:%S' 或 '%Y年%m月%d日 %H:%M'</h1><pre class="brush:php;toolbar:false;"> now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for region in self.view.sel():
self.view.replace(edit, region, now)
- 保存后,打开
Preferences → Key Bindings,添加快捷键(例如 Ctrl+Alt+T):
{ "keys": ["ctrl+alt+t"], "command": "insert_datetime" }
之后光标处按快捷键,即插入当前时间,选中多处会逐个替换。
为什么不用 snippet 的 或
Sublime 的 snippet 解析器对 <date></date> 的处理非常有限:
-
<date></date>只展开为 snippet 文件保存时的时间(硬编码进 XML),后续触发永不更新 -
<date yyyy-mm-dd></date>等语法是某些第三方插件(如 InsertDate)扩展的,原生不识别,直接写进去会被当普通文本输出 - snippet 不支持函数调用、变量计算或条件分支,无法满足“每次不同”的核心需求
如果坚持用 snippet:只能接受静态时间或妥协方案
真不想写插件,又想用 snippet,只有两个现实选择:
- 把常用时间格式写死成多个 snippet,比如
dt_now对应2024-06-15 14:30:00,手动定期更新——显然不实用 - 配合插件
InsertDate(Package Control 可装),它重载了Ctrl+Shift+P → Insert Date命令,并支持自定义格式字符串,但本质仍是插件,不是纯 snippet - 注意:
InsertDate的格式符是 Python 的strftime语法(如%Y-%m-%d %H:%M),不是 snippet 的<date></date>扩展
动态时间这事,绕不开 Python 插件。别在 snippet 里死磕 <date></date>,它从设计上就不是干这个的。

















