Sublime Text 原生不支持动态插入当前日期时间,必须通过手写 insert_datetime.py 插件实现;snippet 只静态生成一次时间,无法实时更新;自定义插件兼容 ST4、无需重启、支持多光标与跨平台格式控制。

Sublime Text 原生不支持插入当前日期或时间,所有“一键插入”都依赖自定义命令或插件——但插件不是必须的,手写一个 insert_datetime.py 是最轻量、最可控、兼容性最好的方案。
为什么不能用 snippet 插入动态时间
Sublime 的 snippet(如 <date></date>)只在创建时计算一次时间,每次触发都输出同一个静态值。你想要的是“每次按快捷键都取当前时刻”,这必须靠运行时调用 datetime.now(),而 snippet 没有执行 Python 的能力。
常见错误:复制网上带 <date> 的 snippet 以为能动态更新,结果发现时间永远停在昨天。
如何手写 insert_datetime.py 并绑定快捷键
这是目前最稳定、无需额外依赖、适配 Sublime Text 4(Python 3.8+)的做法:
- 菜单栏 → Tools → Developer → New Plugin…,清空默认内容,粘贴以下代码(注意缩进):
import sublime
import sublime_plugin
from datetime import datetime
class InsertDatetimeCommand(sublime_plugin.TextCommand):
def run(self, edit):
now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for region in self.view.sel():
self.view.replace(edit, region, now)
- 保存为
Packages/User/insert_datetime.py(路径可通过 Preferences → Browse Packages 打开) - 打开 Preferences → Key Bindings,在右侧用户设置中添加:
{"keys": ["ctrl+alt+t"], "command": "insert_datetime"}
- 保存后,光标处按
Ctrl+Alt+T(Windows/Linux)或Cmd+Alt+T(macOS)即可插入 - 多光标选中多个区域时,每个位置都会独立插入当前时间——这是预期行为,不是 bug
strftime 格式符别写错
格式字符串直接传给 datetime.now().strftime(),写错会导致插件静默失败(无报错,但没插入):
-
%y是两位年份(如26),%Y才是四位(如2026) -
%H是 24 小时制(15),%I是 12 小时制(03),漏掉前导零用%-H(Linux/macOS)或%#H(Windows),但跨平台建议统一用%H - 中文格式如
%Y年%m月%d日 %H:%M可直接用,无需额外编码设置 - 改完保存
insert_datetime.py即生效,不用重启 Sublime
为什么不推荐 InsertDate 类插件
InsertDate 等老牌插件在 Sublime Text 4 下已出现兼容问题:
- 部分版本启动时报
ImportError: No module named 'date',因 Python 3.8+ 移除了旧模块别名 - 配置项键名不统一(
date_formatsvsformats),改了也不生效 - 依赖 GUI 弹窗选格式,反而比直接改代码慢半拍
- 你真正需要的只是“按一下就插对的时间”,不是一整套时间管理 UI
手写插件只有 7 行核心代码,控制权完全在你手上,格式、快捷键、多光标行为全可预期——复杂点在于第一次写时要核对 strftime 符号,其余全是确定性操作。

















