ruby-on-rails - 从 RubyMine 迁移到 Vim - 解释自动完成

标签 ruby-on-rails vim vim-plugin

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

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

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

有没有我错过的插件可以增强我的自动完成功能?看起来 RubyMine 并没有做一些 super 疯狂的事情。如果 pry 在相同的“上下文”中运行,它可以给我相同的“力量”。

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

enter image description here

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

enter image description here

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

enter image description here

最佳答案

重要提示
此解决方案仅适用于 Ruby 1.9+

我在 https://github.com/zxiest/vim-ruby fork 了 'vim-ruby'并将其修改为:

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

  • 插件和设置

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

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

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

    将此添加到您的 ~/.vimrc
    :set tags=./tags;
    :let g:easytags_dynamic_files = 1
    

    确保 touch ./tags在您的项目目录中。

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

    重新映射全能

    为了 omnicomplete要弹出,默认情况下,我们必须点击 <C-X><C-O> .我将其重新映射到 <C-Space>通过在我的 ~/.vimrc 中插入以下内容:
    inoremap <C-@> <C-x><C-o>
    我现在按 tab当我希望 supertab 完成我的代码和 Ctrl+Space当我希望omnicomplete 为我触发和显示方法签名时。肯定有更好的方法来整合它(即让 supertab 在点之后调用omnicomplete)

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

    enter image description here

    关于ruby-on-rails - 从 RubyMine 迁移到 Vim - 解释自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914063/

    相关文章:

    ruby-on-rails - rails : can I use two nested map?

    ruby-on-rails - Rails 查询 : Filter by properties in another table

    vim - 使用空格确认搜索

    python - 为什么在 .vim 文件中编写 Python 时 "\n"会变成 "^@"?

    vim - 如何在 Vim 中默认禁用 ale 插件?

    vim - 在选择其中的项目后,如何才能使 QuickFix 窗口关闭?

    ruby-on-rails - 如何在保留所有者和权限的同时从数据容器装载卷?

    ruby-on-rails - Ruby on Rails - 第一个应用程序 - 没有创建index.html

    具有 VIM 集成的 Java IDE,适用于来自 C/C++ 的人

    vim - 为什么这个vim映射会很慢?