【问题标题】:Error in custom sublime build for knitr markdownknitr markdown 的自定义 sublime 构建中的错误
【发布时间】:2013-12-23 23:43:49
【问题描述】:

我正在尝试在 Sublime Text 3 中创建自己的 sublime-build,因为 knitr 包 (https://sublime.wbond.net/packages/knitr) 中的默认构建不起作用(对我来说)。我将knitr包中的修改如下:

{
    "selector": "text.html.markdown.knitr",
    "working_dir": "${project_path:${folder}}",
    "cmd": ["Rscript", "-e", "library(knitr); knit('$file')" ],
    "shell": true
}

但得到错误:

Error: '\G' is an unrecognized escape in character string starting "'C:\G"
Execution halted
[Finished in 0.4s with exit code 1]
[cmd: ['Rscript', '-e', "library(knitr); knit('C:\\GitHub\\Projects\\test\\testLaTeXing\\knitrRmd\\testRmd.Rmd')"]]

显然是一些 Windows 路径转义问题,但是当我想动态访问文件路径时如何解决这个问题?

我在 windows7 上工作。

【问题讨论】:

    标签: sublimetext sublimetext3 sublime-build


    【解决方案1】:

    尝试将您的 "cmd" 行设置为:

    "cmd": ["Rscript", "-e", "library(knitr); knit('${file/\\\\/\//}')" ],
    

    基本上,这是一个匹配两个\ 字符并用一个/ 字符替换它们的正则表达式。每个\/ 都需要用\ 进行转义,因此会有鸡爪。

    我不在 Windows 上进行测试,但理论上这应该可行。如果没有,另一种尝试是

    "cmd": ["Rscript", "-e", "library(knitr); knit('${file/\\\\/\\/}')" ],
    

    它将\\ 替换为单个\

    请告诉我它是如何工作的,我很想知道!

    【讨论】:

    • 不太好用,第一个选项删除两个反斜杠(在 C: 之后,其余部分仍然存在),第二个选项完全删除“library(...)”
    • 哎呀,错过了决赛/${file/\\\\/\//}${file/\\\\/\\/} 怎么样?
    • @adibender - 见我上面的编辑和评论 - 新版本有效吗?
    • 不幸的是它也不起作用,和以前一样的问题。我玩了一下,这个${file/\\\\/\/g} 用空字符串替换了所有双反斜杠,但我无法让替换工作..
    • 好的,这似乎可行:"cmd": ["Rscript", "-e", "library(knitr); knit('${file/\\\\/\\/\/g}')" ],
    【解决方案2】:

    感谢@MattDMo,这就是我终于做出来的。

    {
        "selector": "text.html.markdown.knitr",
        "working_dir": "${project_path:${folder}}",
        "cmd": [ "Rscript -e \"library(knitr); knit('$file', output='$file_path/$file_base_name.md')\"" ],
        "shell": true,
    
        "windows":
        {
            "selector": "text.html.markdown.knitr",
            // "working_dir": "${project_path:${folder}}",
            // "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
            "cmd": ["Rscript", "-e", "library(knitr); knit('${file/\\\\/\\/\/g}', output='${file_path/\\\\/\\/\/g}/$file_base_name.md' )" ],
            "shell": true
        }
    }
    

    默认命令来自 knitr sublime 包 (https://github.com/andrewheiss/SublimeKnitr/blob/master/knitr-Markdown.sublime-build)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多