如何保留 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。现在我没有使用 Rstudio
但 vim
和 nvimr
我知道如何生成标签以便能够跳转到定义(我为我自己的包做的),但是我无法从系统中找到包中的源文件 /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 选项卡,显示命名对象的值。如果该对象是一个函数,它会显示其源代码。
我做了很多 R
,有时我需要能够跳转到给定包的函数定义。在 Rstudio
中,这很简单,按 Alt-click
将打开包含源代码的视图 window。现在我没有使用 Rstudio
但 vim
和 nvimr
我知道如何生成标签以便能够跳转到定义(我为我自己的包做的),但是我无法从系统中找到包中的源文件 /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 选项卡,显示命名对象的值。如果该对象是一个函数,它会显示其源代码。