在VIM中更好地自动完成

所有,

我已经和vim一起工作了一段时间,并且喜欢它的一切 – 我只有一件事我很想念像RubyMine这样的IDE,那就是高级自动完成function。

作为参考,这是我的标准VIM设置: https : //github.com/wrwright/.vim

我尝试过使用omnicomplete + supertab的ctags,我想念的一个主要元素是能够调出属性/常量/方法的上下文敏感列表。 例如,当我学习RubyMotion时,我很乐意帮助记住iOS SDK常量/属性/方法,但是我的VIM自动完成function会因建议类名而停止。如果它确实建议方法/属性,它会列出大量的方法/属性甚至不适用于我正在使用的类。

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

RubyMine做得非常好,如果我能让VIM在自动完成方面同样聪明,那将是天堂般的(在学习RubyMotion / iOS开发时也是一个很好的福音。

我也尝试过SnipMate(甚至是https://github.com/rcyrus/snipmate-snippets-rubymotion上的RubyMotion定制变体),但这似乎并没有提供我正在寻找的function。

相对满意的库存Vim的omnicomplete + vim-ruby和vim-rails具有与NetBeans相同的完成能力,但当然还有Vim的所有function和更低的资源要求。

从我的.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人似乎不想审查pull请求并提供任何反馈,所以我不确定他们是否会将所需的东西添加到rake任务中,该任务创建ycm的标记文件以正常工作框。

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

set tags=./tags;,tags;

然后你需要设置ycm来完成标签。

let g:ycm_collect_identifiers_from_tags_files = 1

你需要使ctags文件与ycm兼容。 这个拉取请求就是这样。 您需要在ctags创建中添加语言字段,然后将bridgesupport更改为ruby。

拉请求

之后,您需要在项目的根目录中运行rake ctags。

如果你不想修改project.rb文件,你可能会创建自己的rake任务,它几乎完全相同。

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

因此,不能期望匹配任何IDE的“代码感知”。 此外,它完全依赖社区提供超过给定语言的默认支持。 如果google或rubymotion网站没有帮助您找到一个严肃的“自动完成”解决方案,我怀疑你会在这里找到它。

下面的博客文章中解释的过程听起来不错,如果在vim配置方面不是很精确的话。

http://rayhightower.com/blog/2013/02/12/automatic-ctags-with-rubymotion-and-vim/