RStudio 无法打开某些文本文件

RStudio won't open some text files

最近我在使用 RStudio 时遇到了一个奇怪的问题(Ubuntu 18.04 上的 v1.3.1056):当我尝试打开一些文本文件时,RStudio 拒绝消息 file is binary rather than text:

但是,我要打开的文件肯定是文本文件。以这个 bibtex 文件为例:

@misc{test,
 author = {test},
 year = {2018},
 title = {test},
}

当我尝试用文件名“test.bib”打开它时,出现上述错误。将其重命名为“test.txt”时,RStudio 会毫无怨言地打开它。这里的步骤为R代码:

rstudioapi::navigateToFile("test.bib") # won't work
file.copy("test.bib", "test.txt", overwrite = TRUE)
rstudioapi::navigateToFile("test.txt") # works perfectly

我很确定 RStudio 不会介意文件结尾,无论过去如何,它都会尝试以文本形式打开文件。但是现在我要么必须重命名文件,要么使用不同的文本编辑器来编辑我的围兜和其他文件。

据我所知,这不是 Ubuntu 将文件标记为二进制文件的问题。否则这些命令之一会抱怨,我认为:

readLines("test.bib")
system("grep 'misc' test.bib")

您可以在此处查看当前文件是否为文本的测试:https://github.com/rstudio/rstudio/blob/d1289249b11e0d12d2be12b3ceb701c41f110cec/src/cpp/session/SessionModuleContext.cpp#L1216。它根据文件扩展名查找记录的 MIME 类型(.bib 当前不在列表中,因此会失败)。

然后它会尝试 运行

file --dereference --mime --brief test.bib

然后查看结果。也许您的系统无法将 test.bib 识别为 text/plain?其他一些类型也将被识别为文本;在 github.

上查看该函数的结尾

这个问题的解决方法比较笨。显然,在 Linux 中可以在文件夹名称中包含换行符,但 RStudio 或 file 不喜欢这样。我不知道我的 test.bib 文件位于一个带有换行符的文件夹中。所以问题可以重现:

bib <- "@misc{test,
 author = {test},
 year = {2018},
 title = {test},
}"
dir.create("test\nfolder")
writeLines(bib, "./test\nfolder/test.bib")

rstudioapi::navigateToFile("./test\nfolder/test.bib") # throws error

当文件夹被称为“测试文件夹”时它可以工作!抱歉浪费了大家的时间,我应该在别处测试一下...