sublime text中插入动态当前时间需用insert_date命令或python插件,因snippet变量${year}仅加载时取值;insert_date轻量但不支持毫秒、时区和t分隔符,且多光标仅首位置生效;插件可实现iso格式、毫秒及多光标独立插入。

能一键插入「此刻」的日期时间,不是靠 snippet 变量,而是必须用 insert_date 命令或自定义 Python 插件——${year} 类变量只在 snippet 加载时取一次快照,反复按快捷键输出的永远是同一个时间。
用 insert_date 命令绑定快捷键(最轻量)
Sublime 自带该命令,不装插件、不写代码,但 format 必须严格符合 Python strftime 语法,且只支持基础格式符。
- 在
Preferences → Key Bindings用户配置中加这一行:{"keys": ["ctrl+alt+t"], "command": "insert_date", "args": {"format": "%Y-%m-%d %H:%M:%S"}} - 务必用英文双引号和半角符号:
"%Y-%m-%d"✅,“%Y-%m-%d”❌ - 避免
%c、%x等 locale 相关格式符,Windows/macOS/Linux 输出可能不一致甚至乱码 -
insert_date不支持毫秒(%f)、时区偏移(%z)、T分隔符(如2026-06-15T22:14:00),旧版 Sublime 遇到会静默失败 - 多光标下只在第一个光标位置插入,其余光标被忽略
用 Python 插件支持 ISO 格式与毫秒(真动态)
要输出 2026-06-15T22:14:00.123+08:00 或中文格式,必须写插件。关键不是写不写,而是怎么绕过常见坑。
- 新建
Packages/User/insert_datetime.py,内容精简为:import sublime, sublime_plugin, datetime<br>class InsertDatetimeCommand(sublime_plugin.TextCommand):<br> def run(self, edit):<br> now = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:23] + '+08:00'<br> for region in self.view.sel():<br> self.view.replace(edit, region, now) - 缩进必须是 4 个空格,错一格就静默失效
- 绑定快捷键:
{"keys": ["ctrl+shift+t"], "command": "insert_datetime"} - 用
datetime.datetime.now(),别用time.time(),否则时区可能偏差 8 小时 - 天然支持多光标:循环
self.view.sel()即可,每个光标独立插入当前时刻
别踩这些坑:快捷键 & 格式陷阱
看似简单,但实际卡住多数人的从来不是功能,而是配置细节。
- Windows 用户慎用
ctrl+alt+d或ctrl+alt+t:输入法、显卡驱动、远程桌面常劫持这类组合键,建议改用ctrl+shift+t或alt+shift+t -
$CURRENT_YEAR等变量不补零(5 月输出5而非05),且部分版本根本不识别,优先用insert_date或插件 - 复制网上示例时,极易混入中文引号、全角空格、换行符——粘贴后用「显示不可见字符」确认
- 想让日志里每次输
dt再按 Tab 插入,得用.sublime-snippet+run_macro_file,insert_snippet绑快捷键做不到动态
真正难的不是生成时间字符串,而是分清哪些能力是 Sublime 原生不提供的:毫秒、时区、任意 strftime 格式、多光标逐点更新——这些必须靠插件,没法绕。











