Sublime Text3 插件编写教程_第一课

 今天给大家分享一下编写一个Sublime Text3 插件的流程以及使用插件解决的一个实际问题。

一、开发插件的前提条件

  • 开发sublime插件用到的是Python语言,因此必须懂Python语言的基础语法。学习Python语言,推荐学习廖雪峰的Python教程(http://www.liaoxuefeng.com/)。
  • 编写插件处理文本用到正则表达式的地方非常多,尽量了解正则表达式语法。学习正则表达式,推荐正则表达式30分钟入门教程(http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html)。

、新建插件

1. 通过Tools -> New Plugin...来打开一个初始化的插件编辑文件。

  初始化后的插件有如下内容:

2. 通过Preferences -> Browse Packages...打开Packages文件夹,在该文件夹下建立个子文件夹,名字为你想开发的插件名字,如:defineReplace。

回到插件开发的初始化编辑器页面,通过 ctrl+s 保存这个文件,并放到你建立的子文件夹下,文件名如:defineReplace.py 。

3、通过 ctrl+` 快捷键或者View -> Show Console 打开SublimeText的控制台。

并在输入框执行如下的命令:view.run_command('example')

执行结果如下,第一行插入了Hello,World!:

4、ExampleCommand类名字改为你想要的插件名字,如: definereplaceCommand(Command之前的名称小写),然后就可以开发该插件对应的功能了,当然这时候输入的命令也变成了view.run_command('definereplace'),这样执行才有效。

5、通过官方的API文档查找你需要的接口,文档见:http://www.sublimetext.com/docs/3/api_reference.html

、编写插件

下面我分享一下我写的一个插件,这个插件的功能是将verilog文件中的define定义,全部替换成真实的值。

将文件中的宏定义替换成真实的值:

下面将我插件的源代码分享一下,并且提供了详细的注释,大家可以对照着API文档,理解我代码的内容,由于手机上不容易显示,我截几张图,详细的代码可以通过阅读原文去我的博客进行了解:

、绑定快捷键

在defineReplace文件夹下新建映射文件,文件名是固定的。

这两个文件分别对应着不同的平台windows和linux,当然在Mac平台是Default (OSX).sublime-keymap。文件内容如下:

keys代表对应的快捷键,command代表着要执行的命令。

、运行效果

  运行前:

ctrl+shift+r运行后:

今天的分享就到这里,下一篇继续分析。如果大家觉得还可以呀,记得推荐呦。

原文发布于微信公众号 - 七夜安全博客(qiye_safe)

原文发表时间:2016-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逆向技术

逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复

           逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复 首先我们要知道这个OD的Bug是什么. 我们调试一个UNICODE的窗口,看下其...

2097
来自专栏雨过天晴

转 Mac OS/Linux命令查询网络端口占用情况

1253
来自专栏云计算与大数据

研发:理解系统调用nice

允许进程改变它们的优先级。 包含在increment参数中的整数值用来修改进程描述符的nice字段。

1083
来自专栏JadePeng的技术博客

Jupyter notebook安装与使用

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 安装 安装python...

3766
来自专栏lzj_learn_note

Source Insight阅读Android Frameworks源码

最介绍如何使用Source Insight阅读源码之前,推荐一个在线阅读源码的网站grepcode,而且其中查找某个方法在哪些地方有过调用这个小功能还是蛮有用的...

1366
来自专栏我的技术专栏

vi 方向键和Backspace键失效问题的解决方法

872
来自专栏LhWorld哥陪你聊算法

【常见错误】--Nltk使用错误

AttributeError: module 'nltk' has no attribute 'word_tokenize'

1842
来自专栏Rgc

redis权限认证及登录

2151
来自专栏Python小屋

Python标准库glob用法精要

Python标准库glob提供了glob()和iglob()两个函数用来枚举指定文件夹中符合特定模式的文件列表,支持“?”和“*”通配符。 >>> impor...

37913
来自专栏lgp20151222

…… are only available on JDK 1.5 and higher 错误(spring 的jdk版本检测在jdk 8下的修订)

1、在项目中创建一个package为org.springframework.core 2、在该package下面新建JdkVersion.java,内容如下...

1641

扫码关注云+社区