标签:style http color 使用 os strong 文件 io
最近一段一直使用sublime进行golang开发,整体感觉很不错,虽然比不上eclipse之类IDE强大,但是用起来很轻巧便捷,开发golang完全做够了。由于有一部分代码复用率很高,经常要用到,而自己记性特别差也懒得每次自己敲,就希望能够像其他IDE的插件那样能直接插入代码模板,于是就研究了下sublime的插件开发(网上有很多人推荐Gist,但是发现由于网络原因适用Gist插件很慢,每次都要等很长时间)。
template #模板文件夹 codemanage.py #插件代码 Default (XXX).sublime-keymap #快捷键配置文件,XXX值平台 var-map.conf #替换变量配置文件,key=value
codemanage.py代码如下:
#-*- coding: UTF-8 -*- import sublime, sublime_plugin import os import os.path import time import sys reload(sys) sys.setdefaultencoding(‘utf8‘) #写入模板,如果是新模板按照模板名创建一个文件,如果是旧模板则覆盖写原文件 class CodeTplAddCommand(sublime_plugin.TextCommand): def run(self,edit): #获取当前选中内容 selstr = ‘‘ sels = self.view.sel() for sel in sels: value = self.view.substr(sel) if value == ‘‘: continue selstr = selstr + value + ‘\n‘ if selstr == ‘‘: sublime.message_dialog("Select content is empty.") return def on_done(name): if name==‘‘: sublime.message_dialog("Template name is empty.") return #写入文件 path = os.path.join(sublime.packages_path(),"CodeManage","template",name+".ctpl") try: f = open(path, ‘w‘) print selstr selstr.encode("gbk") f.write(selstr) except Exception, e: print e sublime.message_dialog("Write template file fail:"+str(e)) return finally: f.close() def on_change(name): return def on_cancel(): return #输入模板名 self.view.window().show_input_panel(‘Plese input the code template name‘,‘template‘,on_done,on_change,on_cancel) #将对应模板插入当前位置 class CodeTplInsertCommand(sublime_plugin.TextCommand): def run(self,edit): filenames = [] rootdir= os.path.join(sublime.packages_path(),"CodeManage","template") for p,d,files in os.walk(rootdir): filenames = files def on_sel_done(selvalue): if selvalue==-1: return filename = filenames[selvalue] content = ‘‘ if filename==‘‘: sublime.message_dialog("Template is not exist.") return path = os.path.join(sublime.packages_path(),"CodeManage","template",filename) try: f = open(path, ‘r‘) content = f.read() if content==‘‘: sublime.message_dialog("Template file is empty") return content = ReplaceVar(content) except Exception, e: sublime.message_dialog("Open template file fail:"+str(e)) return finally: f.close() #把内容插入当前位置 sels = self.view.sel() for sel in sels: self.view.insert(edit,sel.begin(),content) #打开选择列表 self.view.window().show_quick_panel(filenames,on_sel_done) #处理一些模板替换变量 #将模板中{{XXX}}的变量替换成配置文件中的变量({{data}}等信息直接替换) def ReplaceVar(content): varmap = { ‘{{date}}‘:time.strftime(‘%Y-%m-%d‘,time.localtime(time.time())) } #读取变量 try: path = os.path.join(sublime.packages_path(),"CodeManage","var-map.conf") f = open(path, ‘r‘) for line in f.readlines(): if line==‘‘: continue value = line.split("=") varmap["{{"+value[0]+"}}"] = value[1] except Exception, e: sublime.message_dialog("Open var-map file fail:"+str(e)) return finally: f.close() for (k,v) in varmap.items(): content = content.replace(k,v) return content懂python应该可以看出来非常简单。
Sublime插件开发——简单的代码模板插件,布布扣,bubuko.com
标签:style http color 使用 os strong 文件 io
原文地址:http://my.oschina.net/goodtemper/blog/295243