今天是五四青年节,在此先祝大家节日快乐!!!
--------------------------------------------华丽的分界线---------------------------------------------------
     从使用ST开始,就觉得使用起来很顺手,在加上各种各样的插件,做起开发来还真可以省不少事儿。以前做.net一直用vs,不过说实话vs是最好用的IDE,没有之一;现在呢,入了前端的行,用起vs总是觉得太过笨重,于是就用起了同事推荐的ST,从此哥开发js和php就全靠它了。
    51放假的时候突发奇想,自己整个sublime text的插件玩玩。之所有有这样的想法,主要是我们的项目使用seajs负责模块的划分和加载,这样一来新建的模块就必须按照seajs要求的格式来开发,格式如下:
下面就以生成一个这样的模板为例来带领大家对ST插件开发有个大致的了解
 
ST插件开发
参考资料:http://my.oschina.net/theforever/blog/136554,哥就是参考这篇文档照葫芦画瓢整出来的,有兴趣的朋友情拜读原文,现在就不废话了马上开始今天的主题
 
       ST的api是基于python的,详情见http://www.sublimetext.com/docs/2/api_reference.html
没有用过python的同学别吓着了,哥也不会,但是在谷歌和百度的帮助下做出了这么一个插件
       其实ST已经为我们开发插件准备了一些东西,Tools > 新插件 ST就会为什么创建好这样一个模板
看不懂没有关系,其实我也不懂,后面看完那篇文章才有了点儿似懂非懂的感觉。这是python的语法,以后再慢慢研究吧。
现在在 ST安装目录\Data\Packages(ST的插件都在此目录下)下新建一个文件用来保存即将开发的插件,目录如下
 *seajs.py 插件的主要文件,插件的功能有它实现
 *Default (Windows).sublime-keymap  配置插件的快捷键
 *Default.sublime-commands 配置命名,可以再ctrl+shift+p打开的命令窗口使用
 *Main.sublime-menu 菜单配置,也就是给我们的插件一个菜单入口
    这3个配置文件其实很简单,都是json文本,如果不会写可以从其他插件那里copy一个过来改改就行了,我们最主要的工作还是使用ST提供的api在py文件中实现我们想要的功能
   功能描述:选中原有js内容或者内容为空,调用我们的插件,然后生成注释并包装成seajs要求的格式,同时会向右缩进
具体代码如下:
import sublime, sublime_plugin,time

class seajsCommand(sublime_plugin.TextCommand):
def run(self, edit):
#当前视图
view = self.view
#当前选择的区域
sels = view.sel()
selContent = ''
if len(sels) > 0 :
#获取以一个选中区域
sels = sels[0]
#获取选中区域内容
regionStr = view.substr(sels)
#重新拼接字符串--前面插入一个tab
for s in regionStr.split('\n'):
selContent += '\t' + s + '\n';
#剪切掉当前选中的内容
view.run_command('cut')
#获取当前时间
curtime = time.strftime('%Y-%m-%d %X',time.localtime(time.time()))
content = '/**\n * @athor #作者\n * @desc #描述\n * @date ' + curtime + '\n */\ndefine(function(require,exports,module){\n'
content = content + '\t//代码开始,此处省略代码1W行\n'
content = content + selContent;
content = content + '\t//代码结束\n'
content = content + '\n});'
view.insert(edit,0,content)
#清空剪切板
sublime.set_clipboard('')
  最终效果:
       以上通过一个简单的例子来记录ST插件的开发,一共也就花了不到3个小时,难免有所疏漏而且记录的比较简单,还望各位网友海涵。
 
 

【自己动手】sublime text插件开发的更多相关文章

  1. sublime text 插件开发

    前言:术语和参考资料 sublime text 2的扩展模式相当的丰富.有多种方法可以修改语法高亮模式以及所有的菜单等.它还可以创建一个新的build系统,自动补全,语言定义,代码片段,宏定义,快捷键 ...

  2. Vue.js 入门指南之“前传”(含sublime text 3 配置)

    题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...

  3. 配置sublime text 3 的Python开发环境

    为了在sublime实现像Python自带idle一样的F5交互功能: 首先安装package control然后install Sublime REPL:然后配置 Preference-->P ...

  4. sublime text 2代码片段(Snippet)功能的使用

    “snippet”在英语里面是“片段”的意思.当我们编码时候,通常想要打几个简略的字符串,就出来一些固定的模板. 例如:使用snippet在新建文件时快速生成HTML头部信息等. 定义很简单,菜单:t ...

  5. Go语言环境配置 Sublime Text + GoSublime+ gocode + MarGo组合

    买来<Go Web编程>一书学习Go语言,结果按照书中的步骤搭建,发现部分站点已经失效了,查了网上好多教程也没有人能够说清楚如何搭建.还是自己动手找方法吧,经过自己的不懈努力终于搭建好了. ...

  6. 如何在Sublime Text中添加代码片段

    我们在编写代码的时候,总会遇到一些需要反复使用的代码片段.这时候就需要反复的复制和黏贴,大大影响效率.我们利用Sublime Text的snippet(代码片段)功能,就能很好的解决这一问题.通俗的讲 ...

  7. Sublime Text Snippets(代码片段)功能

    原文链接:http://www.bluesdream.com/blog/sublime-text-snippets-function.html 我们在编写代码的时候,总会遇到一些需要反复使用的代码片段 ...

  8. Windows下TeX Live + Sublime Text 3 + Sumatra PDF配置

    本文写给我的师弟们,如何自己动手配置LaTeX环境(通过LeX Live + Sublime Text 3 + Sumatra PDF). 1.TeX Live 配置 首先从TeX Live 下载IS ...

  9. Sublime Text下使用SFTP/FTP插件

    一.前言 本文主要记录了Sublime Text编辑器下的SFTP/FTP的安装使用,方便linux和windows下的文件编辑,只是简单的记录,有不足之处,还望指教. 二.Linux和windows ...

随机推荐

  1. POJ 2157 Evacuation Plan [最小费用最大流][消圈算法]

    ---恢复内容开始--- 题意略. 这题在poj直接求最小费用会超时,但是题意也没说要求最优解. 根据线圈定理,如果一个跑完最费用流的残余网络中存在负权环,那么顺着这个负权环跑流量为1那么会得到更小的 ...

  2. [HDU 4821] String (字符串哈希)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4821 题目大意:给你M,L两个字母,问你给定字串里不含M个长度为L的两两相同的子串有多少个? 哈希+枚 ...

  3. SSH连接问题

    新安装的ubuntu14.04无法使用root用户ssh连接,显示ssh root permission denied 解决方法: /etc/ssh/sshd_confg: PermitRootLog ...

  4. 【LOB】使用USER_LOBS视图获得当前用户包含LOB字段的表

    包含LOB类型字段的表往往需要特殊关照,如何快速的获得包含LOB对象的数据库表?使用DBA_LOBS.ALL_LOBS和USER_LOBS视图可以很方便地获得包含BLOB或CLOB字段的表. 简单看一 ...

  5. python 简单实现文件拷贝

    1.背景 一日加班需要写一个文件拷贝的函数. 写了几版拷贝函数,有需要的直接粘贴过去 def CopyLocaleFile1(sorfile,desfile): #第一版 sorfp=open(sor ...

  6. 简洁之美 -约瑟夫环的python 解法

    问题描述: 约瑟夫环问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到k的那个人出列:他的下一个人又从1开始报数,数到k的那个人又出列:依此规律重复下 ...

  7. HDU1213

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1213 #include<stdio.h> #include<algorithm&g ...

  8. Android Studio使用中的小常识

    1.如何继承抽象类? 1.1新建一个类如下: public class PersonDBOpenHelper{ } 1.2手写extends 你继承的类名 public class PersonDBO ...

  9. dll 学习(一)

    DLL(Dynamic Link Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量.函数或类.在仓库的发展史上经历了"无库-静态链接库-动态链接库 ...

  10. Windows Server 2008修改远程桌面连接数

    服务器安装了Windows Server 2008,现在要增加远程连接,开启服务器上的远程桌面连接,使用管理员账户远程登录.默认情况下Windows Server 2008允许一个连接数,一个账号最大 ...