带选项的Sublime Text构建系统

5 投票
3 回答
4321 浏览
提问于 2025-04-17 05:58

我有一些不同的 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 个回答

1

我对Python了解不多,没法给你具体的代码,但看起来你需要自己写一个exec.py文件,来处理一系列的命令,并提供控制逻辑。然后在JSON文件中,你只需要把“cmd”这个键的值写成 [["first cmd"], ["second cmd"],..., ["last cmd"]], 这样的格式。

我在关注这个问题,我真的很喜欢你的想法。

2

其实,你并不需要自己写一个插件。你只需要用到构建变体就可以了。下面是一个简单的例子,使用了你提到的命令:

{
  "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目标的变体。

1

我最后自己做了一个插件,并在 run() 里放了以下内容:

self.view.window().run_command('exec', {'cmd': ['sh', 'script.sh'], 'quiet': False})        

我是根据这个 Git 支持插件的代码做的: https://github.com/notanumber/gitst2

撰写回答