Sublime插件开发入门

在用sublime写python的时候,懒得写文件头,就想到了自己写个插件来一键解决这件事。

查了一番,踩了一些坑后还是搞定了。

Sublime的插件要用Python脚本语言写,而且官方也开放了一系列的API文档。

编写脚本

首先来编写脚本,可以在sublime的菜单栏里选择

  • 可以选择Tools -> Developer -> New Plugin... 会打开一个新的文件窗口,在里面编写然后保存即可。

  • 还可以直接新建一个Python脚本文件,然后保存到~/Library/Application\ Support/Sublime\ Text\ 3/Packages/User/路径下就行。

    这个路径也可以在左上角菜单依次选择Sublime Text --> Preferences --> Browser Packages打开。

下面这个是我的一个简单的插件脚本吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#coding:utf-8
import sublime, sublime_plugin
import datetime
import os
class AnnotationHeadCommand(sublime_plugin.TextCommand):
def run(self, edit):
file_name = os.path.basename(self.view.file_name())
self.view.run_command("insert_snippet",
{
"contents" : self.annotation_for_file(file_name)
}
)
def annotation_for_file(self, file_name):
annotations = {
"py" : "#!/usr/bin/python\n"
"# -*- coding:utf-8 -*- "
"\n\n"
"'''"
"\n"
" @Author : JyHu\n"
" @Email : auu.aug@gmail.com\n"
" @datetime : ""%s" %datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") +"\n"
" @Description : Description\n"
" @FileName : ""%s" % file_name +"\n"
"'''"
"\n"
}
return annotations[file_name[file_name.rfind('.') + 1:]]

保存时的名字可以随便写,只要别有重名就行,建议大驼峰写法。

绑定快捷键

写完插件脚本并保存以后,打开Sublime Text --> Preferences --> Key Bindings,来绑定快捷键。

打开以后的窗口,左边是系统默认的一些快捷键,右边是自己加入的,一定要注意,不要由快捷键重复冲突。

这个文件是以JSON的格式保存的,所以,我的可以如下:

1
2
3
[
{ "keys": ["super+shift+h"], "command":"annotation_head"}
]

在我的macOS 上就可以 用如下快捷键很快的添加python文件的头了:command + shift + h

这里要注意Command的写法,要全部小写,第二个大驼峰以后都需要使用下划线_连接,几个对照的例子如下:

File Name Command
TestFile test_file
testfile testfile
ShowCalcResult show_calc_result

当时在写的时候,坑就是Command总是写不对,趟了一番水后才摸清。

测试一下可以按下 Ctrl + ~ 快捷键,然后输入view.run_command('your command')就可以测试一下了。

这里有一个官方的API文档官方文档,当然还有热心的国人翻译的Sublime插件开发API手册

还有这个:How to Create a Sublime Text 2 Plugin,虽然是2的,但是也能用。