用 insert_snippet 绑定快捷键最稳,无需插件且跨平台一致;insert_date 命令轻量但格式受限;需毫秒或时区则必须写 textcommand 插件。

用 insert_snippet 绑定快捷键最稳,不用装插件
Sublime 本身不带插入时间的默认快捷键,但内置的 insert_snippet 命令配合时间变量就能直接用,Windows/macOS/Linux 行为完全一致,且不依赖 Python 版本或系统命令。
打开 Preferences → Key Bindings,在右侧用户配置中加这段:
[{
"keys": ["ctrl+alt+t"],
"command": "insert_snippet",
"args": {
"contents": "${year}-${month}-${day}T${hour}:${minute}:${second}"
}
}]
-
${year}、${month}等变量由 Sublime 底层解析,自动补零(${month}是06,不是6) - 别用
$CURRENT_YEAR——它不补零,ST4 已逐步弃用 - 如果快捷键没反应,检查是否混入中文引号或全角空格;Windows 用户慎用
ctrl+alt+d类组合,易被输入法拦截 - 想换空格分隔?把
contents改成"${year}-${month}-${day} ${hour}:${minute}:${second}"
insert_date 命令支持 strftime 格式,但有兼容限制
Sublime 自带 insert_date 命令,比插件轻,适合需要自定义格式但又不想写 Python 的场景。但它只支持基础 strftime 格式符,不支持 %f(毫秒)、%z(时区)、%c(locale 依赖格式)。
同样在 Key Bindings 用户配置里加一行:
{"keys": ["ctrl+shift+t"], "command": "insert_date", "args": {"format": "%Y-%m-%d %H:%M:%S"}}
- 常见错误:复制了中文引号 “%Y-%m-%d” 或用了
%f,导致原样输出或无反应 -
insert_date不处理多光标——多个选区时只插到第一个光标位置 - 避免用
%x、%c这类 locale 依赖格式,跨平台可能崩
要毫秒、时区或动态逻辑?必须写 TextCommand 插件
当你需要 2026-06-03T11:46:22.123+08:00 这种带毫秒及时区的时间戳,或者想按文件类型切换格式(比如 .log 用 ISO,.py 注释用中文),insert_snippet 和 insert_date 都做不到,只能自己写插件。
新建 Packages/User/insert_datetime.py,内容精简如下:
import sublime, sublime_plugin, datetime
class InsertDatetimeCommand(sublime_plugin.TextCommand):
def run(self, edit):
now = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:23] + '+08:00'
for region in self.view.sel():
if region.empty():
self.view.insert(edit, region.a, now)
else:
self.view.replace(edit, region, now)
- 用
datetime.now(),别用time.time()——后者是浮点数,还得转,纯绕路 - 缩进必须是 4 空格,错一格整个插件静默失效
- 保存后不用重启,按
Ctrl+Shift+P输入Insert Datetime就能立即测试 - 如果要适配本地时区而非硬编码
+08:00,得用zoneinfo(ST4 Python 3.9+)或第三方库,复杂度陡增
别踩这些坑:插件、变量、热键的常见翻车点
很多人搜“Sublime 插入时间”第一反应是装插件,结果反而更麻烦:
-
InsertDate插件已多年未维护,在 ST4 下常报AttributeError: 'NoneType' object has no attribute 'view' - 用
$(date +%Y-%m-%d)调系统命令?Windows 默认没有date支持该语法,Mac 上也未必一致 -
run_macro_file方案虽能用$CURRENT_YEAR,但 macro 无法做条件判断,也不支持毫秒 - 快捷键绑定后没效果?先关掉所有输入法,再试试
alt+shift+t替代ctrl+alt+t
真正关键的不是“怎么插”,而是“插出来的字符串能不能直接进日志、要不要改、会不会跨平台乱码”。越简单的方式越可靠,除非你明确需要毫秒或时区——那就要接受多写几行 Python 的成本。











