我想调用存储在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]
感谢您的帮助
答案 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"
}
}