升华与cmd的关键绑定build_with

时间:2018-08-26 09:01:09

标签: sublimetext3

我想调用存储在Sublime外部插件中的特定构建命令。 .sublime.build看起来像这样。

{
  "selector": "text.html.markdown.knitr",
  "working_dir": "${project_path:${folder}}",
  "env": { "LANG": "en_US.UTF-8" },
  "cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file$
  "shell": true,

  "variants":
  [
    {
      "name": "Run",
      "working_dir": "$file_path",
      "shell_cmd": "Rscript -e \"rmarkdown::render(input = '$file')\""
    }
  ]
}

它使用cmd简单地调用外部命令。我想创建一个自动选择.sublime.build的“运行”变体的键绑定。我尝试使用以下代码:

{ "keys": ["ctrl+shift+b"], "command": "build", "args": {"build_system": "/Packages/knitr/knitr-Markdown.sublime-build", "variant": "Run" }},

不幸的是,shell返回

shell_cmd or cmd is required
[cmd: None]
[dir: /Users/serg/Desktop]
[path: /Library/Frameworks/Python.framework/Versions/2.7/bin:/Users/serg/anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/MacGPG2/bin:/opt/X11/bin]
[Finished]

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

首先,您当前的构建文件无效,JSON本身无效。我不确定这是否是复制和粘贴错误。如果没有,请使用JSON Validator来修复语法。

接下来,您需要以正确的语法提供命令。 cmd期望该命令为数组。由于您的cmd不完整,因此我将提供另一个示例。

语法错误

"cmd": ["compiler --arg source.c"]

正确的语法

"cmd": ["compiler, "--arg", "source.c"]

作为参考,这是来自R-IDE软件包的one of the build files

{
    "selector": "text.html.markdown.rmarkdown",
    "working_dir": "$file_path",
    "cmd": [
        "Rscript", "-e",
        "rmarkdown::render('$file_name', encoding = 'UTF-8')"
    ],
    "osx":{
        "path": "/Library/TeX/texbin:/usr/local/bin:$PATH"
    }
}