ruby-on-rails - 使 Vim 的全能上下文感知 ruby​​/rails 的最佳方法是什么? (即智能感知)

标签 ruby-on-rails vim intellisense omnicomplete

Vim 的自动完成功能似乎只是把厨房水槽扔给我,希望其中一个词是我需要的。如果我知道成员方法的前几个字符,我没问题,但有时我不记得成员方法是 'obj.visible' 还是 'obj.is_visible',在这种情况下,我有 50-1000 个选项涉过。

考虑以下代码:

  class MyClass
    def some_method
    end

    def another_method
    end
  end

  def a_global_method(stuff)
    return stuff + " more stuff"
  end

现在如果我输入
obj = MyClass.<c-x><c-o>

我有 50 个选项,从“<”开始。 'new' 在这里将是一个很好的默认值。哎呀,即使我键入 n,cx/co new 也不是第一个选项。

情况变得更糟:
obj = MyClass.new
obj.<c-x><c-o>

这又给了我 50 个选项,也许它们都是合法的,但为什么不默认为 'some_method' 和 'another_method' 呢?

但是等等,所有选项都不合法:
obj = MyClass.new
obj.a<c-x><c-o>

这只给了我 2 个选项,但其中之一是“a_global_method”。所以显然它完全不知道类或模块是什么,至少在我当前的设置下。如果无论如何我必须输入一半的成员名称,我也可以使用。

说到这里,总结一下我目前的设置如下:
rails .vim
使用以下设置:
"omnifunc=rubycomplete#Complete is set by rails.vim
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1
autocmd FileType ruby,eruby let g:rubycomplete_include_object = 1
autocmd FileType ruby,eruby let g:rubycomplete_include_objectspace = 1

我已经是 12 年以上的忠实 vim 用户,但完成对我来说从来没有真正正确地工作过。我在工作中使用 Visual Studio,并且经常使用智能感知作为拐杖。由于我在 Rails 中编码的频率不足以记住每种方法,因此一点点智能的爱会大有帮助。

有什么插件很好用吗?我只是缺少一个设置吗?

最佳答案

你试过YouCompleteMe ?

这里YouCompleteme

关于ruby-on-rails - 使 Vim 的全能上下文感知 ruby​​/rails 的最佳方法是什么? (即智能感知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12720489/

相关文章:

ruby-on-rails - 未定义的方法 `render' !

ios - 发起 Twilio 调用后如何在 iOS 中取消它?

vim - 关于 VIM 脚本编写的好指南?

vim - 如何使两个用户定义的突出显示一起工作

macos - 如何在 .vimrc 文件中检测 OS X,以便某些配置仅适用于 OS X?

c++ - 在 Intellisense 中评估枚举中的字符串常量

.net - 未记录的string.Split()重载?

c++ - VS2012 如何通过 IntelliSense 显示标准 C++ 库的文档?

mysql - 表单标签和查询

ruby-on-rails - Rspec:在之前的测试后保存记录