最近遇到一个问题,开发代码的时候(以php为主)是在开发机上(有samba),但开发机的环境却跟线上环境不一致(lamp环境、路由规则、mysql、redis等都不一致,也就是无法在开发机上看到自己代码的效果),而如果想看项目的效果就只能上测试机(在开发项目的时候有一台开发机同时配一台测试机)。它们之间的代码同步是通过一个shell脚本进行的。这就很影响开发效率(无法实现php的所做即所见,需要上终端上运行个命令。。。),特别是像我这种重度依赖sublime编辑器的。因此就想怎么能在sublime下开发,然后通过一键式命令实现同步代码,最后可以直接在浏览器上看到效果(接口的json数据或var_dump调试数据)。
废话不多说,开始上干货:
1、插件代码:
我的笔记本是windows,通过samba在sublime下编辑开发机上的代码:
在:C:\Users\ComputerName\AppData\Roaming\Sublime Text 3\Packages\ 目录下创建一个文件夹:
名字按需要,这里叫Deployotp,然后在这个文件夹中创建python文件:deployotp.py,然后编辑文件,写入代码:
import os
import sys
import re
import sublime
import sublime_plugin
import urllib
class DeployotpCommand(sublime_plugin.TextCommand):
def loadSetting(self):
#sublime自带的获取配置信息的函数(配置相关内容见步骤2)
self.settings = sublime.load_settings('Deployotp.sublime-settings')
def execDeploy(self, url, buildPath, deployHost, buildFileLocation = ""):
#拼接url
url = url + '?buildPath=' + buildPath + '&host=' + deployHost + '&buildFileLocation=' + buildFileLocation
content = urllib.request.urlopen(url).read()
if content == None or content == "":
#在sublime下方的状态栏打印消息,便于查看插件的运行结果
sublime.status_message('fail to run deployotp')
else:
sublime.status_message('deployotp success')
#sublime插件的入口
def run(self, edit):
self.loadSetting()
#获取执行命令所在文件(就是需要同步到测试机的文件)的路径
path = self.view.file_name()
#拼接buildPath
buildPath = '' #省略
self.execDeploy(self.settings.get('remoteUrl', ''), buildPath, self.settings.get('deployHost', ''), self.settings.get('buildFileLocation')) #从配置中获取一些参数传给execDeploy函数
else:
sublime.status_message('wrong dir')
到此插件的代码部分就写完了。代码是去开发机上调起一个php进程,然后进行部署,这里就不详细写了。这里只是对第一次开发sublime插件的一个小结。
2、插件配置
如果不要求对插件中的一些参数可配置,可以忽略此步。
在Deployotp文件夹下,创建文件:Main.sublime-menu,文件内容如下:
[
{
"id": "preferences",
"children":
[
{
"id": "package-settings",
"children":
[
{
"caption": "Deployotp",//插件名
"children":
[
{
"command": "open_file", "args":
{
"file": "${packages}/Deployotp/Deployotp.sublime-settings" //配置文件的路径
},
"caption": "Settings – Default"
},
{ "caption": "-" }
]
}
]
}
]
}
]
最终效果是在sublime的菜单栏“preferences”中的“package-settings”中插入我们的插件配置,实现对插件参数的可配置。
3、在右键的菜单栏中增加插件的快捷方式:
在Deployotp目录下,新建文件:Context.sublime-menu,内容入下:
[
{
"id": "deployotp",
"caption" : "deployotp",
"command" : "deployotp"
}
]
效果就是邮件后就有名为deployotp的快捷方式了,这里是在一级菜单下直接写的,sublime也支持多级菜单,不再赘述。
4、增加快捷键直接调用插件:
右键其实往往懒得去点,远不如快捷键方便,快捷键的配置在:
preferences->Key Bindings->Default.sublime-keymap/User.sublime-keymap 中,此处增加如下配置:
{ "keys": ["ctrl+alt+u"], "command": "deployotp" },
实现的效果就是按住ctrl+atl+u键,执行deployotp命令。
至此,插件就基本开发完了。
水平有限,欢迎指正~
如需转发,请注明出处,thx~
sublime插件api:http://www.sublimetext.com/docs/3/api_reference.html
sublime插件样例:http://www.sublimetext.com/docs/plugin-examples