如何保留 R 包的源文件,以便我可以创建标签并跳转到 vim 中的定义

How can I keep the source files of a R package so I can create tags and jump to definition in vim

我做了很多 R,有时我需要能够跳转到给定包的函数定义。在 Rstudio 中,这很简单,按 Alt-click 将打开包含源代码的视图 window。现在我没有使用 Rstudiovimnvimr

我知道如何生成标签以便能够跳转到定义(我为我自己的包做的),但是我无法从系统中找到包中的源文件 /usr/lib64/R/library 甚至安装在我自己的库中的那些(我通过这样做得到的)

install.packages("data.table", INSTALL_opts=c("--preclean --no-multiarch --no-lock --with-keep.source"))
# OR on the cmd line
R --vanilla CMD INSTALL --preclean --no-multiarch --no-lock --with-keep.source data.table

我原以为 --with-keep.source 会将源文件保留在库中,但我看不到它们

me@nyzls604m:~/R/x86_64-pc-linux-gnu-library/4.0/data.table$ ll R
total 880K                       
-rw-r--r-- 1 umanskyc quant 868K Jun 27 09:02 data.table.rdb       
-rw-r--r-- 1 umanskyc quant 4.5K Jun 27 09:02 data.table.rdx       
-rw-r--r-- 1 umanskyc quant 1.1K Jun 27 09:02 data.table           

因此我的问题是:Rstudio 是做什么的,有没有办法让我获取我安装的软件包的源代码,以便我可以解析它们并从 vim[=22 获取“跳转到定义” =]

要查看 R 函数的 R 源代码,您可以在 R 控制台中键入函数名称(不带括号或参数);例如:

> Rcpp::cppFunction

function (code, depends = character(), plugins = character(), 
    includes = character(), env = parent.frame(), rebuild = FALSE, 
    cacheDir = getOption("rcpp.cache.dir", tempdir()), showOutput = verbose, 
    verbose = getOption("verbose")) 
{
    if (!is.null(depends) && length(depends) > 0) {
## Additional output omitted

RStudio 似乎通过使用此信息生成您提到的函数定义,创建一个只读查看器窗格,其中包含您从 R 控制台简单获取的相同信息。它似乎没有查找任何 R 源代码文件并跳转到所需的定义,因为它只显示单击函数的定义,即使 R 源代码文件会在那里定义许多函数。

因此,我认为您无法完全 nvimr 中您想要的功能。使用 with-keep.source option 保留源代码中的代码格式(例如,保留代码注释),这样当您在控制台中打印函数的源代码时,您可以看到作者是如何编写代码的(包括他们的注释);它不会将 R 脚本放在 R/ 目录中;所有内容仍保存在 .rdb.rdx 文件中。

然而,正如我在开头提到的,您仍然可以通过在 R 控制台中键入它们的名称(或任何最方便的 nvimr shortcut/equivalent 来查看这些函数定义).

如果我没理解错的话,你想要的只是“查看”一个函数的值。默认的 Nvim-R 键绑定是 Leadertp。这将打开一个新的 Vim 选项卡,显示命名对象的值。如果该对象是一个函数,它会显示其源代码。