最轻量稳当的方案是用sublime原生snippet,通过${current_year}等变量拼出标准时间格式,无需插件、不依赖python版本,在st3/st4行为一致。

用 snippet 插入时间最轻量、最稳
不需要装插件,不依赖 Python 版本,Sublime 原生支持的 ${CURRENT_YEAR}、${CURRENT_MONTH} 等变量就能拼出标准格式,比如 2026-02-28 07:57:32 或 ISO 格式 2026-02-28T07:57:32。它在 ST3 和 ST4 下行为完全一致,不会因升级突然失效。
- 菜单栏点 Tools → Developer → New Snippet…,粘贴以下内容并保存为
Packages/User/insert_dt.sublime-snippet <snippet> <content><![CDATA[${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE} ${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}]]></content> <tabTrigger>dt</tabTrigger> <scope>text.plain, source.log, text.html</scope> <description>Insert current datetime</description> </snippet>- 在编辑器中输入
dt后按Tab,立刻插入当前时间;可自由增删scope控制生效范围(如只对.log文件生效) - Windows 用户别用
$(date +...)—— 系统没date命令,会留空或报错;${CURRENT_XXX}是唯一跨平台原生解法
用 Python 插件实现毫秒/时区/多光标支持
当需要 [2026-02-28 07:57:32.123] 这类带毫秒的时间戳,或要自动适配本地时区、同时在多个光标位置插入不同时间(比如日志调试),就必须写插件。snippet 和 InsertDate 都做不到毫秒级精度。
- 新建文件
Packages/User/insert_timestamp.py,内容如下: import sublime import sublime_plugin import datetime class InsertTimestampCommand(sublime_plugin.TextCommand): def run(self, edit): now = datetime.datetime.now() timestamp = now.strftime('[%Y-%m-%d %H:%M:%S.%f]')[:23] for region in self.view.sel(): self.view.replace(edit, region, timestamp)- 在
Preferences → Key Bindings中添加快捷键:{"keys": ["ctrl+alt+t"], "command": "insert_timestamp"} - 注意:必须遍历
self.view.sel(),否则只改第一个光标;若用time.time()代替datetime.now(),可能因系统时区未校准导致慢 8 小时
别碰「自动插入时间」类插件
像 AutoInsertDate 或某些标榜“保存即加时间”的插件,监听的是 on_pre_save 事件,一旦启用,它会在你保存任何文件时无差别注入时间戳——包括 .gitignore、package.json、甚至空行。这不是辅助,是污染。
- 无法按文件类型过滤(比如只想对
.md生效) - 无法跳过已有时间戳的行,容易重复插入
- 调试困难:Ctrl+Z 可能撤销不干净,也看不出是哪个插件动的手
- Sublime Text 4 中很多老插件会抛
AttributeError: module 'datetime' has no attribute 'strptime',因为内置 Python 升级后路径变了,修起来费时又易复发
InsertDate 插件还能用吗?看场景
如果只是偶尔写笔记、临时记日志,且环境可控(比如个人 macOS/Linux 机器),InsertDate 仍是最快上手的选择:命令面板搜 “Insert Date”,选格式,回车就完事。但别指望它在公司统一镜像或 CI 构建机上稳定运行。
- 默认快捷键
Ctrl+Alt+T(Win/Linux)或Cmd+Alt+T(macOS) - 自定义格式要改
Preferences → Package Settings → InsertDate → Settings,加一行如"log": "%Y-%m-%d_%H-%M-%S" - 它不自动刷新,每次触发都是「此刻」,这点和 snippet、Python 插件一致
- 但它依赖 Python 运行时,ST4 下部分用户遇到
strptime报错,需手动改源码——而 snippet 完全没这问题










