够用,但需手动配置插件——Sublime Text 无原生时间插入功能,须创建 insert_date.py 插件,用 datetime.now().strftime() 生成格式化字符串,支持多光标,快捷键需正确绑定并重启生效。

Sublime Text 插入当前时间的原生方法够用吗?
够用,但得手动配——Sublime Text 本身不带日期插入功能,insert_time 这类插件也不是默认安装的。你点菜单 Tools → Developer → New Plugin… 粘贴一段 Python 脚本,保存为 insert_date.py,就能用快捷键触发。别指望按一下就弹出日历选日期,它只负责“此刻生成字符串”。
怎么写一个可靠又易改的日期插入插件?
核心是用 Python 的 datetime.now().strftime(),但要注意时区、格式符号和 Sublime API 的调用方式。下面这个最小可用版本,存到 Packages/User/insert_date.py 就行:
import sublime
import sublime_plugin
from datetime import datetime
<p>class InsertDateCommand(sublime_plugin.TextCommand):
def run(self, edit):
now = datetime.now()</p><h1>可直接改这里,比如 '%Y-%m-%d %H:%M' 或 '%Y年%m月%d日'</h1><pre class='brush:php;toolbar:false;'> date_str = now.strftime('%Y-%m-%d %H:%M:%S')
for region in self.view.sel():
self.view.replace(edit, region, date_str)</pre>关键点:
-
self.view.sel()支持多光标,每个光标都会插入一次 -
strftime()里用%H不是%I,避免午夜后变成 12 小时制混乱 - Windows 用户注意路径分隔符,
Packages/User/是统一写法,不用写成Packages\User\ - 如果想支持不同格式(如只日期 / 带毫秒),别硬编码,改用配置文件或输入面板——但那会增加复杂度,多数人真不需要
绑定快捷键后按没反应?常见卡点在哪?
不是代码错了,大概率是快捷键没生效或插件没加载。检查这几点:
- 文件必须保存为
.py后缀,且放在Packages/User/下(不是Packages/Default/) - Sublime 启动后新增插件要重启才加载,改完代码保存后记得重启
- 快捷键绑定写在
Preferences → Key Bindings里,格式必须是 JSON 数组,例如:{"keys": ["ctrl+alt+d"], "command": "insert_date"} -
command名称必须和类名去掉Command后缀一致:类叫InsertDateCommand,命令就是insert_date - 如果有语法错误,Sublime 控制台(
Ctrl+`)会报ImportError或SyntaxError,不是静默失败
需要自动更新时间戳(比如每次保存都刷新)怎么办?
不能靠这个插件。它只响应手动触发,没法监听保存事件。真要动态更新,得写监听器插件,继承 sublime_plugin.EventListener,重写 on_pre_save()。但强烈建议别这么做——容易误覆盖内容、引发冲突、拖慢保存速度。更稳妥的做法是:在文档头部写个占位符如 LAST_MODIFIED: {date},用外部脚本(Python / shell)批量替换,或者用 Git hooks 自动注入 commit 时间。
时间戳这事,越简单越稳。手敲一次、快捷键一次、格式固定一次,比搞自动更新省心十倍。










