从RubyMine迁移到Vim – 解释自动完成

直到上周,我一直在使用RubyMine进行Rails开发。 我知道它有一个vim插件,但我一直在努力将我的开发迁移到vim和tmux。 我不想继续使用鼠标,VIM给了我更大的灵活性。 我找到了几乎所有我关心的function的插件和解决方法,除了我在下面的第一个截图中的“解释自动完成”function。 RubyMine解释整个rails应用程序并提供按相关性排序的建议(如您所见,它向我展示了所讨论的类的实例变量和方法及其包含的模块)然后它显示了Object可用的(不太相关)方法类。 它还显示了方法签名。

另外,在我的第二个屏幕截图中,您可以看到RubyMine如何为核心Ruby类提供自动完成function。

将其与最底部的屏幕截图进行比较。 我确实已经完成但是没有办法找到我正在寻找的东西。 我正在使用ctagsYouCompleteMevim-railsvim-ruby ,我也尝试安装eclim以查看它是否eclim

是否有一个我错过的插件可以增强我的自动完成function? 它看起来不像RubyMine正在做一些超级疯狂的事情。 如果它在相同的“背景”中运行,那么pry可以给我相同的“力量”。

第一个截图(RubyMine解释自动完成):

在此处输入图像描述

第二个截图(RubyMine核心Ruby类自动完成):

在此处输入图像描述

第三个截图(vim omnifunc + ctags):

在此处输入图像描述

重要说明此解决方案仅适用于Ruby 1.9+

我在https://github.com/zxiest/vim-ruby分叉’vim-ruby’并修改它:

  • 方法签名现在出现在完成中。
  • 我禁用方法名称排序。

插件和设置

vim-rails我正在使用vim-rails https://github.com/tpope/vim-rails

supertab我正在使用supertab https://github.com/ervandew/supertab而不是YouCompleteMe (在我的问题中提到)虽然YouCompleteMe是超级快速和自动的但是我和它的vim-ruby fork之间目前存在一些兼容性问题。

vim-easytags我正在使用vim-easytags https://github.com/xolox/vim-easytags

将其添加到~/.vimrc

 :set tags=./tags; :let g:easytags_dynamic_files = 1 

确保touch ./tags项目目录中的touch ./tags

问题:UpdateTags -R **/*.*来自vim的:UpdateTags -R **/*.* ,以便easytags生成您的标签文件。

重新映射omnicomplete

为了弹出omnicomplete ,默认情况下,我们必须点击 。 我通过在~/.vimrc插入以下内容将其重新映射到

inoremap

我现在按tab键,当我想要supertab来完成我的代码和Ctrl+Space时,我想要omnicomplete来触发并为我显示方法签名。 肯定有一种更好的方法来集成它(即获得supertab以在点后调用omnicomplete)

这里是截图! 请注意,关闭方法排序允许我的自定义resize方法显示在顶部,签名现在出现在完成中(以及在按下enter时在编辑器中)!

在此处输入图像描述