首先创建插件文件夹并编写main.py,通过TextCommand类实现插入时间功能,保存后在命令面板中运行Insert Time命令,或绑定快捷键Ctrl+Alt+T,即可在光标处插入当前时间。

想让你的Sublime Text更贴合自己的工作流?自己写个插件是最佳选择。Sublime Text 支持用 Python 快速开发插件,语法清晰、上手简单。本文带你从零开始,用 Python 编写第一个 Sublime 插件,不依赖复杂工具,直接在编辑器里动手。
了解Sublime插件的基本结构
Sublime 插件本质上是一个包含 Python 文件和可选资源的文件夹。它运行在 Sublime 内置的 Python 环境中(Python 3.8+,取决于版本),可以直接调用 Sublime 提供的 API。
插件通常放在以下路径:
- Windows: %APPDATA%\Sublime Text\Packages\
- macOS: ~/Library/Application Support/Sublime Text/Packages/
- Linux: ~/.config/sublime-text/Packages/
你可以通过菜单 Preferences → Browse Packages… 快速打开这个目录。
立即学习“Python免费学习笔记(深入)”;
创建你的第一个插件:插入当前时间
我们来写一个简单的插件,在光标位置插入当前时间。
步骤如下:
- 进入 Packages 目录,新建一个文件夹,比如叫 MyFirstPlugin。
- 在该文件夹下创建一个名为 main.py 的文件(这是约定俗成的主入口)。
- 打开 main.py,输入以下代码:
import sublime import sublime_plugin from datetime import datetime
class InsertTimeCommand(sublime_plugin.TextCommand): def run(self, edit): now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") for region in self.view.sel(): self.view.insert(edit, region.begin(), now)
说明:
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它不是新的编程语言,而是一种使用现有标准的新方法,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。《php中级教程之ajax技术》带你快速
- sublime_plugin.TextCommand:表示这是一个作用于文本的命令。
- run(self, edit):每个命令必须实现的方法,edit 对象用于执行编辑操作。
- self.view.sel():获取当前所有选区(光标也算作长度为0的选区)。
- self.view.insert():在指定位置插入文本。
如何使用你写的插件
保存文件后,无需重启 Sublime。你可以通过命令面板测试:
- 按下 Ctrl+Shift+P(macOS 上是 Cmd+Shift+P)打开命令面板。
- 输入 InsertTime,应该能看到 Insert Time 命令(Sublime 会自动把驼峰命名转成空格分隔)。
- 回车执行,光标处就会插入当前时间。
也可以绑定快捷键:
- 菜单 → Preferences → Key Bindings。
- 在右侧用户配置中添加:
{ "keys": ["ctrl+alt+t"], "command": "insert_time" }
注意命令名是类名去掉 Command 后缀,并将大写字母转为小写加下划线。
进阶提示:监听事件和更多API
除了 TextCommand,Sublime 还支持其他类型的插件类:
- EventListener:监听编辑器事件,比如文件保存、窗口激活等。
- WindowCommand:作用于整个窗口的操作,比如打开新标签页。
例如,自动在保存时添加时间戳:
import sublime import sublime_plugin from datetime import datetime
class TimestampOnSaveListener(sublime_plugin.EventListener): def on_pre_save(self, view):
只对特定文件类型生效
if view.file_name() and view.file_name().endswith('.txt'):
view.run_command('insert_time')
基本上就这些。不需要复杂构建流程,改完即生效,调试方便。多看看官方文档里的 API 列表,尝试封装常用操作,你的 Sublime 会越来越顺手。









