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.WindowCommand
或sublime_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-keymap
、Default (OSX).sublime-keymap
、Default (Windows).sublime-keymap
,可以看出是用于对应不同系统的,如果你只需要在特定系统上使用,可以不写上其他2个文件。
在编写json文件时,有两个是必须要写的键值,keys
与command
。而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的时候可添加。
一般情况,添加自己的菜单选项只需要caption
,children
,command
这个三个。如下:
[
"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 插件开发流程的主要内容,如果未能解决你的问题,请参考以下文章