是否有可能在 Emacs ESS 中获得类似于 Rstudio 中可用的 R 代码完成?

Posted

技术标签:

【中文标题】是否有可能在 Emacs ESS 中获得类似于 Rstudio 中可用的 R 代码完成?【英文标题】:Is it possible to get code completion for R in Emacs ESS similar to what is available in Rstudio? 【发布时间】:2011-10-15 11:21:02 【问题描述】:

Rstudio 具有出色的代码完成功能。它提供了以给定字符串开头的函数以及函数和参数定义的快速视图。

ESS 足够强大,对我来说很熟悉,并且集成到 Emacs 中,我在其中进行大部分工作 - 所以我很犹豫要不要搬家,但这个功能让我考虑搬家。

是否可以将此功能集成到 Emacs ESS 中?

Emacs ESS 有什么类似的吗?

有希望(如果有,我怎么能支持这样的努力?)

【问题讨论】:

哦,好吧。我试试 YetAnotherIDE。 Emacs autocomplete-mode extension for ESS and R 的可能重复项 类似,但肯定不是骗子! 【参考方案1】:

感谢 Deepayan 的 rcompgen 包(现在作为 utils 包的一部分“提升”到基础 R 中),您确实完成了。所以当我输入

lm(

然后点击 TAB 会打开一个新的缓冲区,让我看到上面窗口的左侧:手头功能的可用选项。不过,我认为您不能直接显示帮助。

还有 / 也是一种在键入时在迷你缓冲区中获得上下文相关帮助的方法,但我忘记了如何/在哪里打开它。

【讨论】:

Emacs 之于 Eddelbuettel 就像蜂蜜之于小熊维尼一样。 ;) 完全正确。还给我铺床,给我端咖啡,喂猫。 ...并回复 *** 问题和 cmets。 @Dirk Re: 最后一段——也许是ess-eldoc? 恐怕您无法获得函数形式参数的弹出帮助,但您可以键入C-c C-v 在另一个缓冲区中获得帮助。【参考方案2】:

[编辑:这是一个旧的答案,从那时起自动完成包就不再流行了。请改用company-mode。它应该默认工作。 Wiki 配置条目是here。]

最新版本的 ESS (> v.12.02) 与 auto-complete 开箱即用包集成(您无需配置任何东西,只需安装自动完成)。它提供关于参数的帮助以及函数帮助。我在wiki添加了详细说明

Ess-eldoc 也被重写,从 v.12.02 开始,它默认处于活动状态,因此您无需进行任何配置。

【讨论】:

Vitoshka 是你使用的 solarize 主题吗? 是的@aL3xa,在使用了多年平静的森林黑暗主题之后,我最近切换到了solarize,对此我感到非常满意:) FWIW,我使用的是 tango 深色主题,我很满意,但我想试试 solarize。看起来不错。 您是如何设置 .emacs 以使帮助以完整的“荣耀”显示的? :) 在我的机器上,相应的帮助弹出窗口很小而且很难看。 @Heisenberg,您将其绑定到 M-d 而不是 M-h。考虑使用compay-mode btw。我已经更新了答案。【参考方案3】:

或者也许我们都应该使用搜索:

Emacs autocomplete-mode extension for ESS and R

我不想脾气暴躁,几个小时前我发现了这个,我仍然感到震惊。它就像一个魅力。虽然我仍然更喜欢老式的弹出窗口。 =)

【讨论】:

这不是一个真正的答案,它更像是一个评论,但正如我所做的那样,通过投票关闭作为完全重复的投票可能会更好地说明这一点。

以上是关于是否有可能在 Emacs ESS 中获得类似于 Rstudio 中可用的 R 代码完成?的主要内容,如果未能解决你的问题,请参考以下文章

Emacs 和 ESS:使用正确版本的 R

用于 R 项目/包开发的 ESS 工作流

是否有某种“包搜索”功能可用于Emacs?

在 Emacs 中获取光标下的字体

如何使用Emacs,ESS,pandoc-mode和polymode从Rmd文件创建pdf?

如何检查 Emacs 中是不是存在当前缓冲区?