原生 Sublime Text 不支持插入当前时间,需自定义 Python 命令或安装维护中的 DateTime 插件;推荐手写 insert_timestamp.py,通过 datetime.now().strftime() 动态格式化,绑定快捷键时注意命令名小写及光标位置。

原生 Sublime Text 没有「插入当前时间」功能,所有看似一键的操作都依赖插件或自定义命令——装错插件、格式写错、快捷键不生效,90% 的问题出在这三处。
为什么 insert_time 命令按了没反应
Sublime 不内置 insert_time 命令,直接搜命令面板输这个词一定找不到。它不是被隐藏了,是根本不存在。Package Control 里搜到的很多“Time”类插件(如老版 InsertDate)在 ST4 + Python 3.8+ 下会静默失败,控制台可能只报 AttributeError: 'NoneType' object has no attribute 'view',但你不打开 Ctrl+` 就完全不知道哪错了。
- 别信「安装即用」的宣传,先查插件 GitHub 最后更新时间——2022 年前的大概率已废弃
- 真正可用的轻量方案只有两种:自己写一个
.py命令,或装仍在维护的DateTime插件(非 InsertDate) - 用
insert_snippet绑定快捷键?它只认静态字符串,$CURRENT_YEAR这类变量不支持时分秒,也**不能**用%H:%M:%S
手写 Python 命令最稳,3 步搞定
新建文件,保存为 Packages/User/insert_timestamp.py(路径必须准确,不能多一层目录),内容如下:
import sublime
import sublime_plugin
from datetime import datetime
class InsertTimestampCommand(sublime_plugin.TextCommand):
def run(self, edit):
fmt = self.view.settings().get("insert_timestamp_format", "%Y-%m-%d %H:%M:%S")
now = datetime.now().strftime(fmt)
for region in self.view.sel():
if region.empty():
self.view.insert(edit, region.a, now)
else:
self.view.replace(edit, region, now)
-
self.view.settings().get()从当前视图读配置,比硬编码更灵活;你可以在单个文件里临时设不同格式:view.settings().set("insert_timestamp_format", "%Y%m%d_%H%M") - 必须用
datetime.now(),别用time.time()——后者返回浮点数,还得转datetime.fromtimestamp(),纯属绕路 - 注意缩进必须是 4 空格,Python 缩进错一行,整个插件就静默失效
- 改完保存后,不用重启 Sublime,按
Ctrl+Shift+P输入Insert Timestamp就能立即测试
快捷键绑定和常见冲突
在 Packages/User/Default (Windows).sublime-keymap(macOS 是 Default (OSX).sublime-keymap)中加这一行:
[{"keys": ["ctrl+alt+t"], "command": "insert_timestamp"}]
- 命令名是
insert_timestamp,不是InsertTimestampCommand或insert_timestamp.py——Sublime 自动把驼峰转下划线小写 -
ctrl+shift+d别乱用,它在 Windows 默认是「复制当前行」,冲突会导致按键无响应 - 如果按了没反应,立刻开控制台
Ctrl+`,看有没有SyntaxError或ImportError;插件加载失败时 Sublime 从不弹窗提醒 - 多光标时每个选区都会插入一次时间,这是预期行为,不是 bug
格式字符串写错的典型表现
strftime 格式符写错不会报错,只会输出字面量,比如:
- 写成
%y-%m-%d→ 输出26-04-15(两位年份),但你想要的是2026-04-15,得用%Y - 写成
%H:%i:%s→ 输出07:i:s(PHP 风格的i/s在 Python 里无效),正确是%H:%M:%S - 写成
%f(微秒)→ 大概率原样输出文字f,ST 的 Python 环境对%f支持不稳定 - 想插入「星期三 04月15日」,得用
%A %m月%d日,%A是完整星期名,%a是缩写(如 Wed)
真正容易被忽略的是:格式字符串改完后,必须确保光标在文本区域里再触发命令——如果光标停在侧边栏、控制台或设置页,run() 中的 self.view 会是 None,导致静默失败。

















