Ruby 在VIM中实现更好的自动完成

Ruby 在VIM中实现更好的自动完成,ruby,vim,autocomplete,rubymotion,Ruby,Vim,Autocomplete,Rubymotion,全部, 我已经和vim合作了一段时间了,我喜欢它的一切——在IDE中,我只错过了一件事,比如RubyMine,那就是高级自动完成 以下是我的标准VIM设置,仅供参考: 我已经尝试过使用omnicomplete+supertab的CTAG,我错过的一个主要元素是能够显示属性/常量/方法的上下文敏感列表。例如,当我学习RubyMotion时,我很想得到一些帮助来记住iOS SDK常量/属性/方法,但我的VIM autocomplete停止了建议类名。或者,如果它确实建议方法/属性,它会列出大量方法/

全部,

我已经和vim合作了一段时间了,我喜欢它的一切——在IDE中,我只错过了一件事,比如RubyMine,那就是高级自动完成

以下是我的标准VIM设置,仅供参考:

我已经尝试过使用omnicomplete+supertab的CTAG,我错过的一个主要元素是能够显示属性/常量/方法的上下文敏感列表。例如,当我学习RubyMotion时,我很想得到一些帮助来记住iOS SDK常量/属性/方法,但我的VIM autocomplete停止了建议类名。或者,如果它确实建议方法/属性,它会列出大量方法/属性,这些方法/属性甚至不适用于我正在使用的类

我希望(简单的示例)能够键入UIColor.bl并使用UIColor.blueColor自动完成(或者建议是否有多个以“bl”开头的选项是UIColor的属性)

RubyMine在这方面做得非常好,如果我能让VIM在autocomplete上同样聪明,那将是天赐的(学习RubyMoon/iOS开发时也是一大福音)


我也尝试过SnipMate(甚至是RubyMotion定制的变体),但这似乎也没有提供我想要的功能。

是的,Vim是一个很棒的文本编辑器

因此,它无法与任何IDE的“代码意识”相匹配。此外,它完全依赖于社区为给定语言提供的默认支持。如果谷歌或rubymotion网站没有帮助您找到一个严肃的“自动完成”解决方案,我怀疑您在这里会找到它

如果在vim配置方面不是非常精确,那么下面博客文章中解释的过程听起来还可以


< P>对VIM的MulnMulf+ +和NETBANS的PAR完成能力相对满意,但VIM的所有铃声和哨声,当然资源要求低。 从my.vimrc中,关于完成选项:

autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1 
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1

我在Rubymotion上有一点运气,那就是YouCompleteMe和启用标记支持。您需要大量ram(YCM在索引大型标记文件时使用~2GB),因为Rubymotion使用的标记大约有40k个标记

缺点是rubymotion人员似乎不想查看拉取请求并提供任何反馈,因此我不确定他们是否会将所需的内容添加到rake任务中,该任务创建标记文件,以便ycm在开箱即用的情况下正常工作

要使其工作,您需要正确设置标记文件


设置标记=./tags;,标记;

然后,您需要设置ycm以完成关闭标记


让g:ycm\u从\u标记\u文件中收集\u标识符\u=1

您还需要使ctags文件与ycm兼容。此pull请求可以做到这一点。您需要在ctags创建中添加一个语言字段,然后将bridgesupport更改为ruby

之后,您需要在项目的根目录中运行rakectag


如果您不想修改project.rb文件,您可能可以创建自己的rake任务,它的功能与project.rb几乎相同。

我很感谢您的回复和链接,Romaill。@geoffharcourt我没有否决它,但我的2美分解释了原因:因为所做的陈述似乎很狭隘。首先,IDE与文本的定义是什么编辑?我不知道。我认为这条线很模糊,因为其中一条线有一些期望。当然,它依靠社区提供支持。这是一个开源项目,没有资金支持,基本上只有一个开发人员,这更像是它是什么的原因,与编辑/ID相反E.和:对于具有正确插件的C/C++来说,completi与任何IDE都一样好。自从你发布这篇文章以来,我一直在运行类似的功能,谢谢。不过,在某个时候,我确实需要在我的雷达上进行尝试。在看到你的插件之前,我发布了一个类似的问题。我最终使用vim ruby并让它显示方法签名(这是我从鲁比明身上最怀念的)。