是否可以使用Sublime文本2来处理R-markdown文件?

时间:2016-12-07 11:52:09

标签: r sublimetext2 sublimetext knitr r-markdown

我最近发现你可以巧妙地使用R-markdown(.Rmd)文件。因为我更喜欢在Sublime文本2中完成所有工作,所以我很高兴找到这个package。由于这个post,发送到R的工作很好,但由于某些原因,sublime并没有编译我的markdown文件。在strg + shift + b而不是.md文件之后我得到了这个错误:

Traceback (most recent call last):
  File ".\sublime_plugin.py", line 337, in run_
  File ".\exec.py", line 154, in run
TypeError: __init__() got an unexpected keyword argument 'shell_cmd'

测试文件具有此表单

% Test document

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do `eiusmod` tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.

```{r example_chunk, fig.width=5, fig.height=3}
x <- rnorm(100)
y <- rnorm(100)
plot(y ~ x, pch=20)
``` 

我使用python 2.7。并安装了knitr的所有依赖项。

1 个答案:

答案 0 :(得分:0)

该软件包中的构建系统包含一个与Sublime Text 2不兼容的Run变体,这是导致您的问题的原因。这似乎是包装作者的疏忽,因此提交错误报告可能是值得的。

与此同时,您可以通过修改构建文件来自行解决问题。如果您打开Packages\SublimeKnitr\knitr-Markdown.sublime-build(如果您没有手动安装插件,请使用PackageResourceViewer),您会看到以下内容:

{
  "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_base_name.md')\"" ],
  "shell": true,

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

问题在于Sublime Text 2不支持shell_cmd(这似乎是Sublime Text 3的补充)。主构建使用cmd并将shell设置为true以运行shell,这是在Sublime Text 2中进行此操作的正确方法。

如果您通过将shell_cmd更改为cmd并将字符串参数包装在方括号中并包含shell行来修改变体:

"cmd": [ "Rscript -e \"rmarkdown::render(input = '$file')\"" ],
"shell": true

它应该适合你。请注意,构建文件是JSON,因此以逗号分隔所有内容非常重要。

此处可能不需要添加"shell": true部分。它可能会在构建的早期保留。我不熟悉Sublime Text 2如何处理它。