5

我有一个项目的各种 shell 构建脚本,并希望创建一个集中的构建系统,其中包含允许运行哪个 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 的构建系统中实现这一点?

谢谢!

4

3 回答 3

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"]
    }
  ]
}

在您的用户首选项文件夹中将其保存为 MyScript.sublime-build。然后,您将能够从构建菜单中选择它,关闭自动目标。

现在,当您按Command+ B(在 Mac 上,在 Windows 和 Linux 上按Control+ B)时,默认目标会在您的文件上执行Script 1,但您也可以选择任一变体。

对于我个人使用的为不同的 Make 目标提供变体的构建文件,请参阅此答案。

于 2012-12-15T02:12:09.087 回答
1

我不知道足够多的 python 来给你具体的代码,但看起来你需要编写自己的 exec.py 来处理命令数组并提供控制逻辑。然后在 JSON 文件中,您只需将“cmd”键的值写入[["first cmd"], ["second cmd"],..., ["last cmd"]],.

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

于 2011-11-10T15:25:07.527 回答
1

我最终制作了自己的插件并将以下内容放在 run() 中:

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

我基于此 Git 支持插件的代码:https ://github.com/notanumber/gitst2

于 2011-11-14T08:40:21.527 回答