Sublime Text 插件开发流程

Posted 努力脱发成为大牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sublime Text 插件开发流程相关的知识,希望对你有一定的参考价值。

1. Package Control

插件的开发需要先安装官方提供的package control。顾名思义,这个工具就是来管理我们的插件的,而且可以下载别人发布的插件。如何安装请自行去百度或去官网查看。

2.创建脚本

打开菜单Tools-> Developer->New Plugin,sublime text会自动帮你创建好一个插件例子。如下:

import sublime, sublime_plugin

class ExampleCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.insert(edit, 0, "Hello, World!")

例子的意思是,在打开的文件中,往文件的首位添加Hello world。之后打开菜单Sublime Text->Preferences->Browse Packages,在此目录上创建一个文件夹,用来存放刚才的插件。文件夹与脚本分别命名为example与example.py。

3.脚本的生存周期

脚本的预加载有两种情况,一种是sublime text第一次打开的时候,一种是保存脚本的时候。而脚本的卸载也有两种情况,一种是sublime text关闭,一种是删除这个脚本的时候。每次预加载,都会搜寻脚本里的command类,绑定好所有的command。如果需要在加载与卸载时调用自己的逻辑,可以定义plugin_loaded()plugin_unloaded()函数。

4.Command类

Command类就是用来执行特定命令或操作的方法,插件的编写都需要创建自己的Command类。类名必须以大驼峰命名法书写,并且以Command为后缀。在执行此Command时,以下划线命名法,并省略command。调试时,可以按ctrl+'打开控制台,输入view.run_command('xxx')。例如创建了一个ExampleCommand类,输入view.run_command('example'),即可执行命令。

所有的command方法,都必须继承自sublime_plugin.ApplicationCommand
sublime_plugin.WindowCommandsublime_plugin.TextCommand。并且逻辑代码一般都是写在run(self, edit)方法里面。

  • ApplicationCommand类
    一般很少继承此类,有WindowCommand和TextCommand的作用。

  • WindowCommand类
    可以对窗口进行操作

  • TextCommand类
    可以对当前标签页的文本进行操作

在example.py脚本中,sublime text自动帮我们创建了一个继承自TextCommand的ExampleCommand类。继承自此类后,就可以对当前标签页的文本进行操作。如例子中,就是在当前的标签文本中加入一行字符串。

5.热键绑定

编写完自己的插件以后,就可以把command绑定到指定的组合键中。热键的json文件是以.sublime-keymap为后缀来存放的,可以直接复制其他插件的sublime-keymap文件来进行修改。一般命名为Default (Linux).sublime-keymapDefault (OSX).sublime-keymapDefault (Windows).sublime-keymap,可以看出是用于对应不同系统的,如果你只需要在特定系统上使用,可以不写上其他2个文件。

在编写json文件时,有两个是必须要写的键值,keyscommand。而args如果插件逻辑有用到可以穿入参数,例如:

[
     
        "keys": ["ctrl+alt+x"], "command": "example"
    
]

6.菜单编写

sublime text提供了3种菜单,后缀都以.sublime-menu,这3种分别为:

  • Main.sublime-menu:主菜单列表,可添加选项到软件上方的工具栏。
  • Side Bar.sublime-menu:右键左边文件列表的菜单列表,可添加选项到此菜单列表。
  • Context.sublime-menu:右键文本内容的菜单列表,可添加选项到此菜单。

其中键值有:

  • caption:菜单选项名字
  • id:选项唯一id。此id不可与其它菜单选项的id同名。一般自己编写的选项可以不用写。
  • children:子菜单。
  • command:绑定的命令。不可在父菜单中添加。
  • args:需要传入参数到command的时候可添加。

一般情况,添加自己的菜单选项只需要captionchildrencommand这个三个。如下:

[
    
        "caption": "Preferences",
        "id": "preferences",
        "children":
        [
            
                "caption": "Package Settings",
                "id": "package-settings",
                "children":
                [
                    
                        "caption": "Example",
                        "children":
                        [
                            
                                "command": "open_file",
                                "args": "file": "$packages/example/Default (OSX).sublime-keymap",
                                "caption": "Key Bindings – Default"
                            ,
                            
                                "command": "open_file",
                                "args": "file": "$packages/example/User (OSX).sublime-keymap",
                                "caption": "Key Bindings – User"
                            
                        ]
                    
                ]
            
        ]
    
]

最后把所有文件都保存在之前创建的example里面就可以了。对于sublime text api不了解的可以到官网https://www.sublimetext.com/docs/3/api_reference.html查看。

以上是关于Sublime Text 插件开发流程的主要内容,如果未能解决你的问题,请参考以下文章

sublime Text3 插件编写教程_第一课

Sublime Text3 插件发布

Sublime Text3 插件发布

sublime Text emmet插件使用手册

sublime text

Sublime Text 3编译Sass - Sublime Text安装Sass插件