更好的VIM自动完成功能

时间:2013-03-30 20:34:35

标签: ruby vim autocomplete rubymotion

所有

我现在已经和vim合作了一段时间了,并且喜欢它的一切 - 我从RubyMine这样的IDE中只有一件事我很想念,那就是高级自动完成。

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

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

我想(简单的例子)能够键入UIColor.bl并将它与UIColor.blueColor自动完成(或建议是否存在以“BL”是的UIColor的性质开始的多个选项。

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

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

3 个答案:

答案 0 :(得分:5)

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

从我的.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

答案 1 :(得分:1)

我对Rubymotion有点运气的一件事是YouCompleteMe和启用标签支持。你需要大量的ram(YCM在索引大型标签文件时使用~2GB)因为rubymotion使用的标签大约是40k标签。

缺点是rubymotion人们似乎不想审查拉取请求并提供任何反馈,所以我不确定他们是否会将所需的东西添加到rake任务中,该任务为ycm创建标记文件以正常工作盒子外面。

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

set tags=./tags;,tags;

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

let g:ycm_collect_identifiers_from_tags_files = 1

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

pull request for that

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

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

答案 2 :(得分:-5)

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

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

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

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