Sublime Text 不内置 insert_time 命令,需通过 Packages/User/insert_datetime.py 自定义插件实现:类名 InsertDatetimeCommand、命令名 insert_datetime、格式符如 %Y-%m-%d %H:%M:%S;错用 %y 或 %I 会导致静默失败。

Sublime Text 没有内置 insert_time 命令
直接在命令面板搜 insert_time 或按 Ctrl+Alt+T 却没反应?不是你配置错了,是 Sublime Text 根本不提供这个命令。所有「插入当前时间」功能都必须靠外部手段实现——插件、自定义 Python 命令,或 snippet 配合系统命令。别浪费时间翻默认快捷键列表,它真不存在。
用 Packages/User/ 下的 Python 插件最可控
这是目前兼容 ST3/ST4、不依赖第三方维护、且格式完全自主的方式。关键点就三个:
- 文件必须保存为
Packages/User/insert_datetime.py(路径可通过Preferences → Browse Packages打开) - 类名必须是
InsertDatetimeCommand,且继承sublime_plugin.TextCommand - 命令名(用于快捷键绑定)是
insert_datetime,全小写,无下划线
示例核心代码段:
import sublime
import sublime_plugin
from datetime import datetime
class InsertDatetimeCommand(sublime_plugin.TextCommand):
def run(self, edit):
now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for region in self.view.sel():
self.view.replace(edit, region, now)
改完保存,无需重启;多光标选区会各自插入一次时间,这是设计行为,不是 bug。
strftime 格式符写错会导致空输出或报错
常见误写:%y(两位年份)、%I(12 小时制)、%M(分钟)和 %m(月份)容易混淆。一旦格式串非法,strftime 会抛 ValueError,命令静默失败——你只看到没反应,控制台也未必报错。
- 要四位年份:用
%Y,不是%y - 要 24 小时制小时:用
%H,不是%I - 中文格式如
%Y年%m月%d日 %H:%M完全合法,但需确保系统 locale 支持 UTF-8 输出 - 毫秒级精度必须用
datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '.%03d' % (datetime.now().microsecond // 1000),不能单靠格式符
快捷键绑定后不生效的典型原因
明明写了插件、加了键位,却按了没反应?优先检查这三项:
- 快捷键 JSON 写在了左侧(默认设置)而不是右侧(用户设置)——只有右侧内容生效
- 键位冲突:比如
Ctrl+Alt+T被终端模拟器或系统全局热键劫持,换用Ctrl+Alt+Shift+T测试 - 命令名拼错:
"command": "insert_datetime"中少字母、大小写混用、多了下划线,都会导致找不到命令
插件逻辑本身没有“启用/禁用”开关,只要文件在 Packages/User/ 下且语法合法,就随时可调用。复杂点在于:格式字符串一错就静默失败,而错误日志默认不弹窗——得打开 View → Show Console 才能看到 traceback。


















