Sublime怎么快速插入当前时间_Sublime自定义Snippet代码片段【进阶】-sublime

需编写Python插件命令实现,因.sublime-snippet仅支持静态变量如$CURRENT_YEAR,不支持strftime等动态时间格式化,且无时分秒、前导零及时区控制。

怎么用 Sublime 的 insert_snippet 插入动态当前时间

Sublime 本身不支持 snippet 中直接执行 Python 时间函数,但可以通过插件或命令扩展实现。原生 snippet(.sublime-snippet)只能做静态文本替换,$CURRENT_YEAR、$CURRENT_MONTH 等变量仅限于少数预定义字段,且不支持格式化(比如“2024-05-21 14:32”这种完整时间戳)。

真正可行的路径是:写一个 Python 插件命令,调用 view.run_command('insert_snippet', {...}) 或直接 view.insert() 写入格式化后的时间字符串。

  • 新建插件文件:Preferences → Browse Packages → User,在该目录下新建 insert_datetime.py
  • 内容示例(支持 ISO 格式和中文格式双键绑定):
    import sublime
    import sublime_plugin
    import datetime
    
    class InsertDatetimeCommand(sublime_plugin.TextCommand):
        def run(self, edit, format_type="iso"):
            now = datetime.datetime.now()
            formats = {
                "iso": now.strftime("%Y-%m-%d %H:%M:%S"),
                "cn":  now.strftime("%Y年%m月%d日 %H时%M分%S秒")
            }
            text = formats.get(format_type, formats["iso"])
            for region in self.view.sel():
                self.view.replace(edit, region, text)
  • 保存后,在 Key Bindings 中添加快捷键:
    [{"keys": ["ctrl+alt+t"], "command": "insert_datetime", "args": {"format_type": "iso"}},
     {"keys": ["ctrl+alt+shift+t"], "command": "insert_datetime", "args": {"format_type": "cn"}}]

为什么不能直接在 .sublime-snippet 里用 strftime

因为 .sublime-snippet 是纯 XML 模板,解析器只识别 $TM_SELECTED_TEXT、$SELECTION、$CURRENT_YEAR 这类内置变量,不执行任何代码。试图写 $${import datetime; datetime.now().strftime(...)} 会原样输出,甚至破坏 snippet 解析。

  • $CURRENT_YEAR 等变量只在部分版本中可用(Sublime Text 4+),且无时分秒
  • 即使加上 $CURRENT_HOUR,也无法拼接成带前导零的 09:05(它返回的是 9 和 5)
  • 所有时间相关变量都不支持时区控制或自定义格式字符串

如何让自定义命令支持光标定位和多光标插入

上面的 InsertDatetimeCommand 已经用了 self.view.sel() 遍历所有选区,天然支持多光标。如果想插入后把光标留在时间末尾(方便继续输入),需额外调用 view.sel().clear() 和 view.sel().add():

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Sublime怎么快速插入当前时间_Sublime自定义Snippet代码片段【进阶】-sublime
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4015003+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4015003+
  • 本周更新: 0+
  • 最后更新: 2026-03-16