sublime text可通过insert_snippet命令插入格式化时间,核心是使用${1:$(date +%y-%m-%d %h:%m)}占位符(windows需改用cmd /c echo截取%date%和%time%),或安装insertdate插件实现跨平台、可配置的精准时间插入。

用 insert_snippet 命令直接插入格式化时间
Sublime Text 本身不带“插入当前时间”快捷键,但内置的 insert_snippet 命令能通过时间占位符实时生成。关键不是装插件,而是写对 snippet 触发逻辑。
实操建议:
- 打开菜单 Tools → Developer → New Snippet…,把默认内容替换成:
<snippet>
<content><![CDATA[<!-- ${1:$(date +%Y-%m-%d %H:%M)} -->]]></content>
<tabTrigger>dt</tabTrigger>
<scope>text.html, source.python, source.js</scope>
</snippet>-
${1:$(date +%Y-%m-%d %H:%M)}是核心:Sublime 在插入时会调用系统date命令,%Y-%m-%d %H:%M控制格式(注意空格和冒号是字面量) -
tabTrigger设为dt,输完敲Tab就触发;可按需改成now或logtime -
scope决定在哪种文件里生效,比如日志常用text.plain,注释多的场景建议加上
Windows 用户必须改用 cmd /c echo 替代 date
Mac/Linux 的 $(date ...) 在 Windows 上直接报错——因为 Sublime 调用的是 shell,而 Windows 默认没有 date 命令支持这种语法。
实操建议:
- Windows snippet 的
<content></content>部分要改成:
<content><![CDATA[<!-- ${1:$(cmd /c echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%)} -->]]>-
%date%和%time%是 Windows 批处理变量,:~x,y是截取子串语法(注意空格位置可能因系统语言变化) - 更稳的做法是用 Python 插件(见下一条),但纯 snippet 方案里,这个字符串能跑通大多数简体中文 Win10/11
- 如果时间总多一个空格(比如
9:05),加个set去空格太重,不如直接换插件
想一键插入且不依赖系统命令?用 InsertDate 插件最省心
手动写 snippet 容易卡在跨平台兼容或格式微调上,而 InsertDate 插件专治这个痛点:它用 Python 实现,格式、时区、前缀后缀全可配,且不调外部命令。
实操建议:
- 用 Package Control 安装
InsertDate后,默认快捷键是ctrl+shift+d(Win/Linux)或cmd+shift+d(Mac) - 想自定义格式,编辑
Preferences → Package Settings → InsertDate → Settings,改"format": "%Y-%m-%d %H:%M:%S" - 常见错误:装完没反应 → 检查是否被其他插件快捷键冲突(比如 Git 插件也用了
ctrl+shift+d) - 性能无影响:它只在触发时执行一次 Python
datetime.now(),比调系统date还快一点
别忽略光标位置和选中状态对插入结果的影响
所有方案都默认把时间插在光标当前位置,但如果光标在行首、行尾、有选中文本,或者处于多光标模式,行为会不同。
实操建议:
- 有选中文本时,
insert_snippet会**替换选区**,InsertDate默认也是替换(可在插件设置里关掉"replace_selection") - 多光标下,每个光标都会插入独立的时间戳(毫秒级不同),适合批量打日志;但如果你想要统一时间,得先合并光标再触发
- 如果总插到行中间打断单词,检查是否误触了
tabTrigger(比如在变量名里打了dt又按 Tab)——关掉 snippet 的auto_complete或换触发词
真正麻烦的不是怎么插,而是时间格式要不要带秒、要不要 UTC、有没有时区偏移。这些一旦定下来,就该固化进 snippet 或插件配置里,而不是每次手敲 strftime。










