日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

sublime插件开发教程(附源码)

發(fā)布時(shí)間:2025/4/5 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sublime插件开发教程(附源码) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.背景

? ?雖然可能大神門在編輯器方面都比較偏向于vim之類的自由度更高的工具,但是從我個(gè)人來(lái)講sublime這樣的插件安裝更方便的工具還是比較得心應(yīng)手的。之前用sublime寫英語(yǔ)作文,但是沒(méi)有一個(gè)比較好用的timer,Package_Control里面的track_timer不能實(shí)時(shí)顯示時(shí)間,所以博主就自己動(dòng)手,寫了這個(gè)插件,可以實(shí)時(shí)timer,記錄時(shí)間。效果如下圖,


2.使用

? ? ?使用起來(lái)很方便,只要把下載好的sublime-timer文件夾放在下圖這個(gè)路徑下即可。

? ? 可以用快捷鍵方便的對(duì)timer進(jìn)行操作: ? ? ? ? ? "control+alt+t": start timer
? ? ? ? ? "control+alt+p": pause or stop timer
? ? ? ? ? "control+alt+z": make zero

3.制作過(guò)程 ?


(1)環(huán)境

? ? ? ? ? ?開(kāi)發(fā)sublime插件用到的是python語(yǔ)言,因?yàn)橐玫絪ublime內(nèi)置的sublime和sublime_plugin庫(kù),所以debug和調(diào)試都應(yīng)該在sublime里面。 下面的鏈接是sublime的庫(kù)得參數(shù)信息:http://www.sublimetext.com/docs/2/api_reference.html

(2)自帶example ? ??


? ? ? 如果不習(xí)慣看開(kāi)發(fā)文檔,可以參考下以下example的開(kāi)發(fā)(下面參考自http://www.welefen.com/how-to-develop-sublime-text-plugin.html)。

1、通過(guò)Tools -> New Plugin...來(lái)打開(kāi)一個(gè)初始化的插件編輯文件,它將有如下的內(nèi)容:

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

2、通過(guò)Preferences -> Browse Packages...打開(kāi)Packages文件夾,在該文件夾下建立個(gè)子文件夾,名字為你想開(kāi)發(fā)的插件名字,如:KeymapManager?;氐讲寮_(kāi)發(fā)的初始化編輯器頁(yè)面,通過(guò)ctrl+s (Windows/Linux) orcmd+s (OS X)保存這個(gè)文件,并放到你建立的子文件夾下,文件名如:KeymapManager.py

3、通過(guò)ctrl+`快捷鍵打開(kāi)SublimeText的控制臺(tái),執(zhí)行如下的命令:

view.run_command('example')如果你在當(dāng)前文件最前面看到插入了Hello, Word!,那表明插件執(zhí)行成功了。

4、ExampleCommand名字改為你想要的插件名字,如: KeymapmanagerCommand,然后就可以開(kāi)發(fā)該插件對(duì)應(yīng)的功能了。

5、通過(guò)官方的API文檔查找你需要的接口,文檔見(jiàn):http://www.sublimetext.com/docs/2/api_reference.html


?(3)sublime-timer


? ? ?這個(gè)就是我開(kāi)發(fā)的sublime-timer,比example會(huì)復(fù)雜一些。大家可以參照以下代碼:
import sublime, sublime_plugin import threading import timei=0class timer(threading.Thread): #The timer class is derived from the class threading.Thread def __init__(self, num, interval):threading.Thread.__init__(self)self.thread_num = numself.interval = intervalself.thread_stop = False def run(self): #Overwrite run() method, put what you want the thread do hereglobal iwhile not self.thread_stop:sublime.set_timeout(write_time,1)i+=1 time.sleep(self.interval) def pause(self): self.thread_stop = Truedef zero(self):global ii=0 thread1 = timer(1, 1) class gtimerCommand(sublime_plugin.TextCommand): def run(self, edit):global thread1thread=timer(1,1) if thread1.isAlive():live=Trueelse: thread.start()thread1=threadclass gtimerpauseCommand(sublime_plugin.TextCommand): def run(self, edit): global thread1thread1.pause()class gtimerzeroCommand(sublime_plugin.TextCommand): def run(self, edit):global thread1 thread1.zero()def write_time():sublime.status_message(time_manage(i))def time_manage(time_number):time_str='time:'+str(time_number/60)+'min '+str(time_number%60)+'s'return time_str
三個(gè)command class,分別對(duì)應(yīng)著上面提到的三個(gè)快捷鍵,這個(gè)對(duì)應(yīng)關(guān)系可以在另外的keymap文件中定義,大家可以把整個(gè)項(xiàng)目clone下來(lái)就看到了。

? ? (4)發(fā)布

?? ? ? ? 如果你做好了一個(gè)個(gè)性插件想讓更多的朋友使用的話可以試試以下兩種途徑。
1.可以給https://github.com/SublimeText發(fā)email
2.可以給https://github.com/wbond/package_control_channelpull issue(有一個(gè)文檔,流程比較麻煩)


項(xiàng)目地址:https://github.com/jimenbian/sublime-timer(fork完別忘了給個(gè)star) 好了,看到這里大家應(yīng)該已經(jīng)對(duì)插件制作有些了解了,動(dòng)起手來(lái)吧!

/********************************

* 本文來(lái)自博客 ?“李博Garvin“

* 轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/buptgshengod

******************************************/



總結(jié)

以上是生活随笔為你收集整理的sublime插件开发教程(附源码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。