记一次sublime插件开发的经历

现在在公司的大部分时间,都在使用windows系统,lua 语言,开发游戏逻辑。windows 下使用lua 开发时,使用了 vs2015 + babelua插件的方式,来启动和调试游戏。

babelua插件虽然在vs 里的断点调试功能支持得不错,但是可能是插件优化得不够好的原因,每次在vs里面F5启动游戏,编辑lua代码的时候,都会有明显的卡顿。与此相比,在vs里面编辑c++代码,则几乎毫无卡顿感,启动c++调试时的手感也要快上很多。因此怀疑很可能是 babelua 插件对vs 的支持 本身有少许问题所导致。

既然在 vs 里面编辑代码都会很影响手感,甚至影响思路,所以平时大部分时候都在用轻量级的  sublime text3 来 编辑代码,只有 启动 exe 时,和不得已 需要 断点观察 代码行为时,才切回 vs.这样切来切去,窗口摆得两个屏幕都有点装不下,多少也会对思路和 效率造成一些影响。

周围许多同事,包括我自己曾经有一段时间,在 mac 上写 lua 逻辑,并无 lua 断点调试的环境,只看 log, 也一样能够完成大部分情况下的逻辑工作。即使是现在,也并不是每一次启动游戏,都需要断点调试。所以,也没有必要在不需要断点调试时,给 babelua 的 exe 启动慢 的 问题 花时间成本。

因此,在无需调试而编辑代码时候,简单的办法 是,在sublime里面编辑 lua, 直接双击 exe 来运行游戏。这样能够省下一些时间。但是问题是,总觉得在 vs 里按一下 F5 就可以直接启动游戏非常方便,如果 sublime 里也有个 按钮,按一下就可以启动游戏,这样就会比 敲完代码自己去手点一下 exe 高效得多。

由此想到,是不是可以通过 给 sublime 写插件的方式,实现此功能。

经过简单的调研,发现完全可行。这得益于 sublime text 完善的插件机制,以及sublime text 插件使用了 python 语言。python语言的库非常非常多,这就给 sublime text 的插件扩展带来了很多的可能性。

下面记录一下关键步骤:

1.新建插件

sublime /Tools/Developer/NewPlugin...

记一次sublime插件开发的经历_第1张图片


这样会新建出来一个默认的文件,内容如下图

记一次sublime插件开发的经历_第2张图片



2. 保存插件

sublime/Preferences/Browse Packages ...

会打开 sublime 插件所在的文件夹。在这里给自己的插件新建一个文件夹,把刚才的文件,以.py 的扩展名保存到这个自己新建的文件夹里。这样一个新的插件就创建好了。


3.测试插件

默认新建的插件,有这样几行代码:

import sublime
import sublime_plugin


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

含义是,在运行插件时,在 光标处,插入 “Hello,World!”字符串。

如果想要使用这个插件,可以用 ctrl+ `(1左边那个键) 打开 sublime 控制台,输入

view.run_command("example"),来运行 这个插件。

为什么是 example呢 ,是因为  class ExampleCommand() 据说有个规则,如果 class名字 Command 前面的内容全部小写,x小写的部分 就可以当做  view.run_command() 的参数名,来运行对应的插件了。


比如我新建的插件文件名,叫做 dzm2.py ,放到了 C:\Users\Administrator\AppData\Roaming\Sublime Text 3\Packages\miaoplugin 这个目录里面,则使用  view.run_command("dzm2") 就可以运行  我自己编写的插件了。


4.Python插件唤起 exe

这一步时简单的 python .我的 dzm2.py 为例,这里的写法是 :

import sublime
import sublime_plugin
import os

# class ExampleCommand(sublime_plugin.TextCommand):
class dzm2Command(sublime_plugin.TextCommand):
	def run(self, edit):
		# self.view.insert(edit, 0, "dzm2")
		exeFile = "g:\\data\\work\\src\\dzm2\\svn\\Resources\\dzm2.exe"
		exePath = "g:\\data\\work\\src\\dzm2\\svn\\Resources\\"
		os.chdir(exePath)
		os.startfile(exeFile)

这样就可以 使用 ctrl+`, 控制台里输入 view.run_command("dzm2") 来运行 dzm2.exe了


5. 绑定 sublime 快捷键

sublime/Preferences/Key Bindings 来打开 自定义 快捷键的文件。

记一次sublime插件开发的经历_第3张图片


在 右侧 Default(Windows).sublime-keymap--User 里,添加自定义快捷键。

keys 定义为 ["alt+r"],command定义为"dzm2" 也就是 刚才自定义的 Command 类名 的小写部分。

保存。


OK,大功告成。这样就可以再 sublime 里编辑 lua 文件,保存后,使用  alt+r 来快速启动 对应的 exe 游戏了!

sublime text 插件基本编写流程记录在此。python语言很灵活,扩展库非常多。如果多加研究,应该能写出来更复杂、更实用的插件。




你可能感兴趣的:(工作日志,折腾)