【问题标题】:Sublime Text Build System With Options带有选项的 Sublime Text 构建系统
【发布时间】:2011-12-25 14:23:19
【问题描述】:

我有一个项目的各种 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 的构建系统中实现这一点?

谢谢!

【问题讨论】:

    标签: python json shell sublimetext


    【解决方案1】:

    实际上,您不需要自己的插件。您只需要 build variants。这是使用示例命令的简单示例:

    {
      "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 上,Control+B 在 Windows 和 Linux 上),默认目标在您的文件上执行 Script 1,但您也可以选择任一变体。

    另请参阅this answer,了解我个人使用的构建文件,为不同的 Make 目标提供变体。

    【讨论】:

      【解决方案2】:

      我对 python 了解的不够多,无法为您提供具体代码,但您似乎需要编写自己的 exec.py 来处理命令数组并提供控制逻辑。然后在 JSON 文件中,您只需将“cmd”键的值写为[["first cmd"], ["second cmd"],..., ["last cmd"]],

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

      【讨论】:

      • 我相信你是对的,它需要是 python。我无法让 Sublime Text 识别来自 shell 脚本的输入。也许是插件而不是构建系统?
      • 这行不通,因为 sublime 不允许在“cmd”中使用多个命令,因为它在内部传递给 popen。
      • Sublime 在 exec.py 脚本中将命令传递给 Popen。如果该脚本被重写以处理一组命令并确定将哪个命令传递给 Popen(这就是我的回答所说的),那么为什么这不起作用?
      【解决方案3】:

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

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

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

      【讨论】:

      • 为什么不把它作为你的custom build system(即“Sublime > Build System > New build System...”)?在这个例子中你似乎没有做任何需要插件的事情
      猜你喜欢
      • 2014-12-28
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 2015-03-01
      相关资源
      最近更新 更多