从RubyMine迁移到Vim – 解释自动完成
直到上周,我一直在使用RubyMine进行Rails开发。 我知道它有一个vim插件,但我一直在努力将我的开发迁移到vim和tmux。 我不想继续使用鼠标,VIM给了我更大的灵活性。 我找到了几乎所有我关心的function的插件和解决方法,除了我在下面的第一个截图中的“解释自动完成”function。 RubyMine解释整个rails应用程序并提供按相关性排序的建议(如您所见,它向我展示了所讨论的类的实例变量和方法及其包含的模块)然后它显示了Object
可用的(不太相关)方法类。 它还显示了方法签名。
另外,在我的第二个屏幕截图中,您可以看到RubyMine如何为核心Ruby类提供自动完成function。
将其与最底部的屏幕截图进行比较。 我确实已经完成但是没有办法找到我正在寻找的东西。 我正在使用ctags
, YouCompleteMe
, vim-rails
, vim-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时在编辑器中)!