是否有任何关于 ctags 与 R 的使用记录?
这有用吗?
实施起来会不会很困难?
具体来说,我刚刚开始使用 Vim。
如果能够在一个文件中编写 R 函数,在另一个文件(例如,Rnw 文件、测试文件或其他脚本)中使用该函数,并能够使用 Ctrl+] 导航到该函数,那就太酷了来源。
更新:我后来偶然发现了rtags 功能。 下面建议它可以与 vim 配合使用。
Is there any documented use of ctags with R?
Would this be useful?
Would it be difficult to implement?
Specifically, I've just started using Vim.
It would be cool to be able to write an R function in one file, use the function in another file (e.g., an Rnw file, test file, or some other script), and be able to use Ctrl+] to navigate to the function source.
Update: I've since stumbled on the rtags function. It is suggested below that it works with vim.
发布评论
评论(7)
这是对 Henrico 答案的修改,可以通过将以下代码复制并粘贴到 ~/.ctags 文件中来实现。 Henrico 的代码不适用于缩进函数,但以下代码可以。
这允许使用 ctag 和函数来识别变量。如果您使用 taglist vim 插件,那么它可以让您区分全局变量和其他变量。另外,如果您使用 taglist,那么您需要将以下内容粘贴到您的 vimrc 中。
This is a modification of Henrico's answer, and may be implemented by copying and pasting the following code into one's ~/.ctags files. Henrico's code did not work for indented functions, but the following code does.
This allows variables to be recognized with ctags as well as functions. If you're using the taglist vim addon, then, it allows you to distinguish between global variables and other variables. Also, if you're using taglist, then you will need to paste the following in your vimrc.
这是我的主目录中 .ctags 文件的内容。我在互联网上的某个地方找到了它。使用它你可以为 vim 生成一个标签文件。
This is the content of my .ctags file in my home directory. I found it somewhere on the internet. Using this you can generate a tags-file for vim.
也许您可以阅读如何向 ctags 添加对新语言的支持。
Probably you can read how to add support for a new language to ctags.
到目前为止,rtags() 是为 R 代码生成标签的最佳方法,因为它将考虑所有不同的分配方式,例如:
使用 rtags() 的示例:
rtags() is the best to way to generate tags for R codes from what I see so far, since it will take all different ways of assignments in consideration, such as:
An example of using rtags():
正如其他
rtags()
+etags2ctags()
可以为 vim 生成tagsfile
(参见:h Tags-and-searches )。您可以为 vim 创建自定义命令,以便它使用
Rscript
在 R 中运行rtags()
。为此,请将其放入您的.vimrc
中:现在,当您执行
:Rtags
vim 时,vim 将运行外部进程Rscript
(它必须位于当然是PATH
)并评估rtags(path="./", recursive=TRUE, ofile="RTAGS");etags2ctags("RTAGS", "rtags");unlink( “RTAGS”)
。rtags()
将在 RTAGS 文件>Emacs 标签格式 然后etags2ctags()
会将其转换为 vim 可以读取的rtags
文件。unlink()
删除RTAGS
文件,因为 vim 不需要它。set Tags+=rtags
使 vim 除了通常的tags
文件之外还搜索rtags
文件(参见:h Tags-和-搜索
)As mentioned by other
rtags()
+etags2ctags()
can generate atagsfile
for vim (see:h tags-and-searches
). You can create a custom command for vim so that it runrtags()
in R usingRscript
. To do so put this in your.vimrc
:Now when you do
:Rtags
vim will run the external processRscript
(it has to be in thePATH
of course) and evaluatertags(path="./", recursive=TRUE, ofile="RTAGS");etags2ctags("RTAGS", "rtags");unlink("RTAGS")
.rtags()
will generate anRTAGS
file in Emacs tags format thenetags2ctags()
will transform that into anrtags
file which vim can read.unlink()
deletes theRTAGS
file since it's not needed for vim.The
set tags+=rtags
makes vim to search for anrtags
file in addition to the usualtags
file (See:h tags-and-searches
)Universal-ctags 有一个 R 解析器。
此外,ctags 实现支持 R6Class 和 S4Class。
Universal-ctags has an R parser.
In addition, the ctags implementation supports R6Class and S4Class.
实际上,我认为
rtags()
在 vim 中可以工作。我使用 nvim-r 插件(可在 https://www.vim 获取。 org/scripts/script.php?script_id=2628),并在我的
~/.vimrc
文件中包含以下内容:通过此设置,使用
:Rtags
在 vim 中重建标签,然后例如当鼠标悬停在单词上时g]
找到该单词的定义。Actually, I think
rtags()
works in vim.I use the nvim-r plugin (available at https://www.vim.org/scripts/script.php?script_id=2628), and have the following in my
~/.vimrc
file:With this setup, using
:Rtags
in vim rebuilds the tags, and then e.g.g]
when the mouse is over a word finds the definitions for that word.