记一次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...



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




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 来打开 自定义 快捷键的文件。



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

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

保存。


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

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




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一份Sublime开发教程,供参考: 1. Sublime Text件结构 Sublime Text件包含以下文件: - 件代码文件 - 件信息文件 - 件资源文件 件代码文件是件的核心代码,通常使用Python编写,并提供一些API供Sublime Text调用。件信息文件包含件的元数据,如件名称、版本号、作者等。件资源文件包含件所需的资源文件,如图标、菜单项等。 2. 创建Sublime件 要创建一个Sublime件,需要了解Sublime Text的API和件结构。Sublime Text提供了一个Python模块,用于开发件。该模块包含了很多有用的API,可以帮助开发者创建功能强大的件。 在开始创建件之前,需要确保已经安装了Sublime Text。可以从Sublime Text的官方网站下载安装程序。 3. 创建件信息文件 Sublime件信息文件使用JSON格式编写。以下是一个示例件信息文件: ```json { "name": "MyPlugin", "version": "1.0.0", "author": "John Doe", "description": "My awesome plugin", "dependencies": [], "url": "https://example.com", "license": "MIT", "platforms": ["windows", "osx", "linux"] } ``` 4. 创建件代码文件 Sublime件代码文件通常使用Python编写,可以使用Sublime Text提供的API。以下是一个示例件代码文件: ```python import sublime import sublime_plugin class MyCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, World!") ``` 5. 创建件资源文件 Sublime件资源文件是件所需的资源文件,如图标、菜单项等。以下是一个示例件资源文件: ```xml <bindings> <binding key="ctrl+shift+h" command="my_command" /> </bindings> ``` 6. 打包件 创建好件信息文件、件代码文件和件资源文件后,就可以将它们打包成一个件。可以使用Sublime Text的打包工具进行打包。打包后的件可以通过Sublime Text的件管理器进行安装。 7. 安装件 要安装一个Sublime件,可以使用Sublime Text的件管理器。打开Sublime Text,选择菜单“Preferences”→“Package Control”→“Install Package”,然后输入件名称进行搜索即可。 总之,Sublime开发需要熟悉Sublime Text的API和件结构,以及Python编程。掌握这些知识后,就可以开发出功能强大的Sublime件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值