【问题标题】:Vim ruby, rails omnicompletion: "Error loading rails environment". How do I configure vim-ruby's autocomplete to work with rails?Vim ruby​​,rails omnicompletion:“加载 rails 环境时出错”。如何配置 vim-ruby 的自动完成功能以使用 rails?
【发布时间】:2015-06-15 01:25:35
【问题描述】:

我正在尝试让vim-ruby 的自动完成功能与vim-rails 一起使用。到目前为止,我可以使用<C-x><C-n> 对当前文件中的现有方法和变量进行本地关键字补全(尽管不保留实例变量和符号的前缀)。我希望能够自动完成 Rails 方法,例如 redirect_tohas_many。但是,当我尝试使用全能完成来完成此任务时,例如redir<C-x><C-o>,Vim 告诉我:

Error loading rails environment
Press ENTER or type command to continue

当我按下ENTER 时,Vim 告诉我:

-- Omni completion (^O^N^P) Pattern not found

vim-ruby 的自动补全功能适用于纯 Ruby 文件,因此Arr<C-x><C-o> 补全为Array,而Array.<C-x><C-o> 提供Array 上的方法列表供您选择。当我在 Rails 文件中尝试此操作时,我得到与上述相同的错误;但是,当我按ENTER 消除错误时,ruby 的自动补全功能按预期工作。

我的问题是,如何正确配置vim-ruby 以便它可以加载Rails 环境?我认为这是vim-ruby 问题而不是vim-rails 因为像:Econtroller <controllername> 这样的命令按预期工作。

我的.vimrc 包含以下内容:

set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
Plugin 'flazz/vim-colorschemes'
Plugin 'slim-template/vim-slim'
Plugin 'vim-ruby/vim-ruby'
Plugin 'tpope/vim-rails'
Plugin 'tsaleh/vim-shoulda'
Plugin 'ervandew/supertab'
call vundle#end()

autocmd FileType ruby set omnifunc=rubycomplete#Complete
let g:rubycomplete_buffer_loading = 1
let g:rubycomplete_classes_in_global = 1
let g:rubycomplete_rails = 1

【问题讨论】:

    标签: ruby-on-rails ruby vim autocomplete omnicomplete


    【解决方案1】:

    经过进一步调查,vim-ruby 正在执行系统的 ruby​​,我无法让 ruby​​gems 工作。我不是很确定,但我相信 vim-ruby/autoload/rubycomplete.vim 在尝试要求 console_app gem 时在 this line 失败,而我的系统上不存在该 gem。

    于是我按照on Jon Cairns' blog的说明重新构建了vim。这篇文章引用了 RVM,但同样适用于 rbenv 或您可能正在使用的任何 ruby​​。

    为了后代,在 Ubuntu 上,我采取的步骤是:

    sudo apt-get install mercurial

    hg clone https://vim.googlecode.com/hg/ vim && cd vim

    ./configure --with-features=HUGE --enable-pythoninterp=yes --enable-multibyte=yes --enable-rubyinterp=yes --with-ruby-command=$(which ruby) --enable-gui=gnome2 --with-x --enable-fontset

    make

    sudo make install

    完成此操作后,Rails 中的全补全功能就像一个魅力 - 虽然第一次使用时有点慢。

    【讨论】:

    • 不再需要安装 mercurial,因为 vim 在 github 上。在./configure ... 之前运行的命令是git clone https://github.com/vim/vim.git && cd vim
    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2011-10-17
    • 1970-01-01
    • 2023-03-08
    • 2012-07-13
    相关资源
    最近更新 更多