最轻量配 insert_date 快捷键需在用户 Key Bindings 中添加 JSON:[{"keys": ["ctrl+shift+d"], "command": "insert_date", "args": {"format": "%Y-%m-%d"}}],注意 keys 必须为字符串数组、引号须英文半角、Windows 避免 ctrl+alt+d;失效主因是 format 非法(如中文标点、错误格式符);多光标仅首位置插入属设计限制;更稳替代是 insert_snippet + ${year}-${month}-${day}。

直接用 insert_date 命令绑定快捷键最轻量,不用装插件、不依赖 Python,但必须手动配、格式写错就静默失败——不是没反应,是插入空字符串。
怎么配 insert_date 快捷键才生效
打开 Preferences → Key Bindings,在右侧用户文件里加一行 JSON:
[{"keys": ["ctrl+shift+d"], "command": "insert_date", "args": {"format": "%Y-%m-%d"}}]
注意几个硬性条件:
-
keys必须是字符串数组,["ctrl+shift+d"]✅,"ctrl+shift+d"❌ - 所有引号必须英文半角:
"%Y-%m-%d"✅,“%Y-%m-%d”❌ - Windows 别用
ctrl+alt+d,容易被输入法或显卡驱动拦截;macOS 优先用cmd+shift+d - 保存后立即生效,无需重启
为什么按了快捷键却啥也没插入
典型现象是光标不动、无输出,根本原因几乎全是 format 字符串非法:
- 混入中文标点、全角空格、换行符——Sublime 不报错,直接丢弃命令
- 用了不支持的格式符:
%f(毫秒)、%z(时区)在旧版 Sublime 会静默失效 - 误把
%M(分钟)当%m(月份),结果输出2026-19-05这种错误日期 - 用
%c或%x这类 locale 相关格式符,跨平台可能乱码或为空
多光标下只插了一个日期,是 bug 吗
不是 bug,是设计限制。insert_date 内部只处理 self.view.sel()[0],即首个选区。即使你开了 10 个光标,也只在第一个位置插入。
如果真要每光标都插独立时间,只能走自定义插件路线,比如写一个 TextCommand 显式遍历 self.view.sel() 并调 datetime.now()。用 insert_snippet + ${year} 变量也一样,所有光标插入的是同一时刻快照,不是实时时间。
更稳的替代方案:用 insert_snippet + 内置变量
如果只要 ISO 格式且追求跨平台一致,推荐改用 insert_snippet:
[{"keys": ["ctrl+alt+t"], "command": "insert_snippet", "args": {"contents": "${year}-${month}-${day}"}}]
优势很实在:
-
${year}、${month}等变量由编辑器底层解析,自动补零(${month}是09,不是9) - 不依赖 Python 版本,ST3/ST4 行为完全一致
- 不调系统命令,Windows/macOS/Linux 输出稳定
- 不支持毫秒、时区等复杂需求,但对日志、注释这类场景足够干净
真正容易被忽略的点是:别用已弃用的 $CURRENT_YEAR 类变量——它们不补零,ST4 正逐步移除支持。


















