insert_date命令最轻量但格式错误会静默失效;自定义python插件支持毫秒和iso格式但缩进、类名、路径须严格规范;insert_snippet方案最兼容稳定,适用于标准iso时间。

insert_date 命令绑定快捷键最轻量,但 format 写错就静默失效
Sublime Text 自带 insert_date 命令,不用装插件、不依赖 Python,改完配置立刻能用。但它不会报错——格式串一错,你按快捷键后光标不动、啥也不出现,其实是输出了空字符串。
常见踩坑点:
-
"%Y-%m-%d %H:%M:%S"✅;“%Y-%m-%d”❌(中文引号) -
%y是两位年份,日志场景该用%Y;%I是 12 小时制,需统一时间线请用%H -
%f(微秒)、%z(时区)不支持,旧版 Sublime 会直接丢弃整条命令 - 多光标下只作用于首个选区——这是设计行为,不是 bug
需要毫秒或 ISO 格式?必须写 Python 插件,且缩进错一格就失效
内置命令搞不定 2026-09-05T23:54:12.345 这种格式,得靠自定义插件。文件路径必须是 Packages/User/insert_datetime.py,类名必须为 InsertDatetimeCommand,继承 sublime_plugin.TextCommand。
关键细节:
- 必须用
datetime.datetime.now(),别用time.time(),否则时区可能偏 8 小时 - 毫秒要手动截取:
strftime('%Y-%m-%d %H:%M:%S.%f')[:23],不能只靠格式符 - 缩进必须严格为 4 个空格,错一格就静默失败,控制台不报错
- 多光标各自插入「此刻」时间,得显式遍历
self.view.sel()
insert_snippet + 内置变量是最兼容的 ISO 方案
如果只要标准 2026-09-05T23:54:12,不用毫秒、不依赖 Python 版本,insert_snippet 是最稳的选择。它用 Sublime 原生变量,所有版本(包括 ST4)都支持。
绑定方式(加到用户 Key Bindings):
{"keys": ["ctrl+alt+t"], "command": "insert_snippet", "args": {"contents": "${year}-${month}-${day}T${hour}:${minute}:${second}"}}
注意:
-
${year}等是 snippet 变量,不是 Python 表达式,自动补零(如09月) - 不支持毫秒、时区、微秒,但格式稳定、无运行时风险
- 所有光标插入的是同一时刻快照,不是实时独立时间
快捷键不生效?先查这三处
明明写了插件、加了键位,却没反应——大概率卡在这三个地方:
- 快捷键 JSON 写在了左侧(默认设置)而不是右侧(用户设置):只有右侧内容生效
- 键位被系统或终端模拟器劫持,比如
Ctrl+Alt+T在 Linux 下常被终端捕获,换用Ctrl+Shift+T - 插件文件名不是
.py、类名没以Command结尾、或没继承sublime_plugin.TextCommand
真正难处理的不是功能本身,而是 format 字符串里一个全角空格、一次缩进错误、或一个被系统吞掉的热键——这些细节不报错,只让你反复怀疑自己是不是配错了。











