insert_date命令最轻量,需手动绑定快捷键;格式错误会静默失败;多光标仅首位置插入;跨平台兼容性好但不支持毫秒及时区;插件非必需但提供预设格式。

用内置 insert_date 命令最轻量,但必须手动绑定快捷键
Sublime Text 本身不带默认快捷键,insert_date 是原生支持的命令,不用装插件、不依赖 Python 运行时,只要配对就能用。它调用系统本地时间,格式由 format 参数控制,兼容性比自定义插件更好。
- 打开
Preferences → Key Bindings,在右侧用户文件里加一行: [{"keys": ["ctrl+shift+d"], "command": "insert_date", "args": {"format": "%Y-%m-%d"}}]- 保存后立即生效,无需重启
- Windows 上避免用
ctrl+alt+d——可能被输入法或系统拦截 - macOS 用户注意:
cmd+shift+d更稳妥,别用ctrl键
insert_date 格式写错会静默失败,不是没反应而是输出空字符串
常见现象是按下快捷键后光标不动、啥也没插入,其实是因为 format 字符串非法。Sublime 不报错,只丢弃整个命令。
- 所有引号必须是英文半角:
"%Y-%m-%d"✅,“%Y-%m-%d”❌ - 别混入中文标点、全角空格、换行符
- 不支持
%f(毫秒)、%z(时区),旧版 Sublime 会直接忽略整条命令 - 慎用
%c、%x等 locale 相关格式符,跨平台可能输出乱码或空值 - 月份/日期补零靠
%m和%d,不是%M(那是分钟)
多光标下 insert_date 只生效一次,这是设计限制不是 bug
选中 5 行、5 个光标,按快捷键后只有第一个光标位置插入时间——因为 insert_date 内部没遍历 self.view.sel(),只处理首个选区。
- 适合单点插入场景:比如写函数注释头、临时标记某一行
- 如果真要每行都插,必须写 Python 插件,显式循环
self.view.sel() - 用
insert_snippet+$CURRENT_YEAR变量也一样,每个光标插入的是同一时刻快照,不是实时时间 - 想让每光标都独立获取「此刻」时间,唯一办法是自定义
TextCommand并在循环里调datetime.now()
插件不是必须的,但 InsertDate 确实省事,前提是版本兼容
Package Control 装的 InsertDate 插件自带 10+ 预设格式、命令面板可选、支持时区偏移,但它在 Sublime Text 4(Python 3.8+)上已多年未更新,部分用户报告导入失败或格式不生效。
- 安装路径:按
ctrl+shift+p→Package Control: Install Package→ 搜InsertDate - 默认快捷键
ctrl+alt+t(Win/Linux)或cmd+alt+t(macOS) - 配置格式需进
Preferences → Package Settings → Insert Date → Settings,改formats数组 - 若发现插入内容为空或格式错乱,先检查插件是否与当前 Sublime 版本兼容(尤其 ST4 用户)
- 离线环境或受限终端里,手写
insert_date绑定更可靠
now = datetime.now() 再复用,这点容易被忽略。


















