我正在尝试获取 vim-ruby
的自动完成与 vim-rails
一起工作.到目前为止,我可以使用 <C-x><C-n>
对当前文件中的现有方法和变量进行局部关键字补全。 (尽管不保留实例变量和符号的前缀)。我希望能够自动完成 Rails 方法,例如 redirect_to
和 has_many
.但是,当我尝试使用 omni-completion 来完成此任务时,例如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
最佳答案
经过进一步调查,vim-ruby
正在执行系统的 ruby,我无法使用它让 rubygems 工作。我不是很确定,但我相信 vim-ruby/autoload/rubycomplete.vim
在 this line 失败了在尝试要求 console_app
gem 时,它在我的系统上不存在。
所以我按照说明重新构建了vim on Jon Cairns' blog .本文引用了 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
制作
sudo make install
完成此操作后,Rails 中的 omni-completion 就像一个魅力 - 尽管第一次使用时有点慢。
关于ruby-on-rails - Vim ruby, rails omnicompletion : "Error loading rails environment". 如何配置 vim-ruby 的自动完成以与 rails 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29542574/