sublime text可通过snippet或python插件插入当前时间:snippet用${current_xxx}变量实现轻量插入,如“now”触发“2024-06-12 14:37”;需strftime灵活格式时,用10行python插件配合快捷键,实时调用datetime.now()确保每次时间刷新。

Sublime Text 本身不内置「插入当前时间」的快捷命令,但通过极简的插件或片段(snippet)就能实现,不需要装一堆扩展、也不用写完整插件。
用 sublime-snippet 文件一键插入带格式的时间
这是最轻量、最可控的方式:你定义好时间格式,每次触发就原样插入,不依赖外部进程,无延迟,跨平台一致。
- 在 Sublime 中菜单栏选择 Tools → Developer → New Snippet…
- 把默认内容替换成以下代码(示例为「YYYY-MM-DD HH:MM」格式):
<snippet><content> ${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE} ${CURRENT_HOUR}:${CURRENT_MINUTE}]]></content><tabtrigger>now</tabtrigger><scope>source, text.plain</scope><description>Insert current date & time</description></snippet>
- 保存为
TimeStamp.sublime-snippet(路径自动定位到Packages/User/) - 在任意代码或文本文件中输入
now后按Tab,立刻插入形如<!-- note --> 2024-06-12 14:37的内容 -
${CURRENT_XXX}是 Sublime 内置变量,支持CURRENT_SECOND、CURRENT_DAY等,但不支持自定义格式化(比如星期几、12小时制),有这需求得换方案
用 Python 插件补全 strftime 灵活性
当你要插入 2024/06/12 Wed 14:37:22 这类带星期、斜杠分隔、秒数的格式时,Snippet 的内置变量不够用,就得靠插件。
- 菜单栏选 Tools → Developer → New Plugin…
- 替换内容为以下精简版(仅 10 行,无依赖):
import sublime, sublime_plugin
import datetime
<p>class InsertTimestampCommand(sublime_plugin.TextCommand):
def run(self, edit):
now = datetime.datetime.now().strftime("%Y/%m/%d %a %H:%M:%S")
for region in self.view.sel():
self.view.replace(edit, region, now)</p>
- 保存为
insert_timestamp.py(同样在Packages/User/) - 然后绑定快捷键:打开 Preferences → Key Bindings,加一行:
{ "keys": ["ctrl+alt+t"], "command": "insert_timestamp" }
- 光标放在任意位置,按
Ctrl+Alt+T(macOS 用Cmd+Alt+T),立即插入格式化后的时间字符串 - 想改格式?只改代码里
"%Y/%m/%d %a %H:%M:%S"这一段就行,strftime语法通用,查 Python 文档即可
为什么不用 date 命令或系统调用?
有人会想到用 exec 插件跑 date "+%F %T",但实际踩坑不少:
- Windows 没原生
date命令支持这种格式,得装 Git Bash 或 WSL 才行,破坏便携性 - Sublime 的
exec是异步的,快速连按可能乱序、卡顿,甚至插入失败却不报错 - 权限问题:某些企业环境禁用 shell 调用,插件直接失效
- 纯 Python 方案(上一节)不依赖外部命令,启动快、行为确定,适合笔记这类低干扰场景
真正容易被忽略的是时间变量的刷新时机:${CURRENT_XXX} 在 snippet 展开瞬间求值,而 Python 插件是执行时实时调用 datetime.now()——如果你在 snippet 里写死一个时间再复制多次,得到的是同一时刻;用插件则每次都是新时间。做日志追踪时,这点差异很关键。











