带选项的Sublime Text构建系统
我有一些不同的 shell 构建脚本,用于一个项目,现在我想创建一个集中管理的构建系统,这样用户可以选择运行哪个脚本。例如,用户按下 Cmd + B 后,会看到以下选项:
1) shellscript1.sh
2) shellscript2.sh
3) shellscript3.sh
用户选择 3,然后 Sublime Text 就会运行 'sh shellscript3.sh'。
我在阅读 http://sublimetext.info/docs/en/reference/build_systems.html,但不太确定如何在 Sublime Text 的构建系统的 JSON 代码中整合这个选项。
在 Sublime Text 2 的构建系统中,怎么实现这个功能呢?
谢谢!
3 个回答
我对Python了解不多,没法给你具体的代码,但看起来你需要自己写一个exec.py文件,来处理一系列的命令,并提供控制逻辑。然后在JSON文件中,你只需要把“cmd”这个键的值写成 [["first cmd"], ["second cmd"],..., ["last cmd"]],
这样的格式。
我在关注这个问题,我真的很喜欢你的想法。
其实,你并不需要自己写一个插件。你只需要用到构建变体就可以了。下面是一个简单的例子,使用了你提到的命令:
{
"name Script 1",
"cmd": ["shellscript1.sh", "$file"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${project_path:${folder:${file_path}}}",
"variants":
[
{
"name": "Script 2",
"cmd": ["shellscript2.sh", "$file"]
},
{
"name": "Script 3",
"cmd": ["shellscript3.sh", "$file"]
}
]
}
把这个保存到你的User偏好设置文件夹里,命名为MyScript.sublime-build。这样你就可以从构建菜单中选择它,关闭自动目标。
现在,当你按下Command+B(在Mac上,Windows和Linux上是Control+B),默认的目标会执行脚本1,在你的文件上运行,但你也可以选择其他的变体。
你可以查看这个回答,里面有我个人使用的构建文件,提供了不同的Make目标的变体。
我最后自己做了一个插件,并在 run() 里放了以下内容:
self.view.window().run_command('exec', {'cmd': ['sh', 'script.sh'], 'quiet': False})
我是根据这个 Git 支持插件的代码做的: https://github.com/notanumber/gitst2