Sublime Text 默认不支持多光标时间插入,需用Python插件实现:每个光标独立插入当前时间,格式建议用ISO 8601变体(如%Y-%m-%dT%H:%M:%S)避免日志解析错误。

Sublime Text 里没有内置的多行时间插入功能
直接按 Ctrl+Shift+P 搜 “insert time” 或 “date” 会发现,原生不支持在多光标位置同时插入当前时间。这不是你配置错了,是 Sublime 默认没这个命令——它只提供单点插入的 Insert → Time/Date...,且无法响应多选区域。
用 Python 插件实现多光标时间插入(推荐方案)
最稳的方式是写一个极简插件,让每个光标位置都独立执行一次时间插入。操作路径:Tools → Developer → New Plugin...,替换内容为:
import sublime
import sublime_plugin
import datetime
class InsertDatetimeCommand(sublime_plugin.TextCommand):
def run(self, edit):
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
for region in self.view.sel():
if region.empty():
self.view.insert(edit, region.a, now)
else:
self.view.replace(edit, region, now)
保存为 insert_datetime.py(路径自动进 Packages/User/),然后绑定快捷键或调用命令:
- 调用方式:按
Ctrl+Shift+P输入Insert Datetime,回车 - 快捷键可加到
Preferences → Key Bindings:{"keys": ["ctrl+alt+t"], "command": "insert_datetime"} - 注意:该插件只对空光标生效;若已选中文本,会先替换掉选中内容
别用 snippet 替代——它不刷新时间
有人尝试用 snippet(如 ${datetime:%Y-%m-%d %H:%M:%S})配合多光标,但 Sublime 的 snippet 时间变量只在触发瞬间求值,所有光标插入的是同一时刻,且无法动态更新。实际日志场景中,毫秒级差异都可能影响排障,这点必须避开。
- snippet 的
${datetime:...}是静态快照,不是实时函数调用 - 多光标下所有位置插入的时间完全一致,失去“每行独立打点”的意义
- 如果真要带毫秒,插件里改用
strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]即可
日志格式建议:避免用空格分隔时间字段
直接插 2024-05-22 14:36:21 看似干净,但在 grep 或日志系统解析时容易被空格截断。更稳妥的做法是用下划线或 T 连接:
插件里把格式改成 "%Y-%m-%d_%H-%M-%S" 或 "%Y-%m-%dT%H:%M:%S",比如 2024-05-22T14:36:21 —— 这种 ISO 8601 变体既人眼可读,又不会被 shell 或 ELK 当成多个字段切开。
真正难的不是插时间,而是让每行时间在后续分析中不被误拆、不丢失精度、不和业务字段混淆。

















