Sublime Text插入当前日期时间最稳方案是用insert_snippet+内置变量,如${year}-${month}-${day}T${hour}:${minute}:${second};需毫秒或多光标则写12行Python插件。

Sublime Text 本身没有「插入当前日期时间」的内置命令,所有可用方案都依赖外部机制——要么用原生 insert_snippet 调用内置变量,要么写 Python 插件,要么装第三方包。最稳、最轻、最兼容的解法是前者,不是插件。
用 insert_snippet + 内置变量插入 ISO 格式时间
这是唯一不依赖 Python 版本、不随 ST4 升级失效、Windows/macOS/Linux 全平台一致的方案。核心是 Sublime 原生支持的 ${year}、${month}、${day} 等变量,自动补零、无时区偏差、不调系统命令。
- 打开 Preferences → Key Bindings,在右侧用户配置中添加:
[
{
"keys": ["ctrl+alt+t"],
"command": "insert_snippet",
"args": {
"contents": "${year}-${month}-${day}T${hour}:${minute}:${second}"
}
}
]
-
${year}-${month}-${day}T${hour}:${minute}:${second}输出形如2026-04-13T14:28:05,完全符合 ISO 8601 - 变量名必须小写,不能写成
$YEAR或${Year},否则留空 - 不支持毫秒、时区缩写(如
Z或+0800),需要这些得换插件 - 快捷键冲突检查:按完没反应?先在命令面板搜
Insert Snippet手动触发一次,确认变量能展开
写一个 Python 插件实现毫秒/多光标/自定义格式
当你需要 [2026-04-13 14:28:05.123] 这类带毫秒的时间戳,或要在多个选区同时插入不同时间(比如日志调试),就必须用 sublime_plugin.TextCommand。
- 新建文件
Packages/User/insert_timestamp.py,内容精简到 12 行即可:
import sublime
import sublime_plugin
import datetime
class InsertTimestampCommand(sublime_plugin.TextCommand):
def run(self, edit):
now = datetime.datetime.now()
s = now.strftime('[%Y-%m-%d %H:%M:%S.%f]')[:23]
for region in self.view.sel():
self.view.replace(edit, region, s)
- 绑定快捷键:
{"keys": ["ctrl+alt+shift+t"], "command": "insert_timestamp"} - 注意
strftime后要切片到[:23],否则末尾多三位 0(Python 的%f是六位微秒) - 别用
time.time()替代datetime.now()——它返回 Unix 时间戳浮点数,转字符串再截取易出精度误差,且不带本地时区信息 - 如果插件没生效,打开 Ctrl+` 控制台看报错;常见原因是缩进错误或文件没放在
Packages/User/下
别碰自动插入类插件(如 AutoInsertDate)
这类插件监听 on_pre_save 事件,在你保存任意文件时无差别注入时间戳,后果比想象中严重。
- 它不会识别上下文:
.gitignore、package.json、空行、已有注释行,全被塞入时间,且无法跳过 - 没有作用域过滤能力,不能限定只对
text.log或source.python生效 - 调试困难:Ctrl+Z 撤销可能只撤掉一部分,控制台也看不到是谁动的手
- ST4 中很多老插件会抛
AttributeError: module 'datetime' has no attribute 'strptime',因为内置 Python 已升级
真正要高频插入时间戳,就用 insert_snippet 绑快捷键,或手写一个 12 行插件。复杂点在于格式控制粒度——内置变量做不到毫秒,插件又得自己处理多光标和选区覆盖逻辑,这两者之间没有银弹,只有根据场景选边站。

















