Vim ruby, всестороннее завершение рельсов: ошибка при загрузке среды рельсов. Как настроить автозаполнение vim-ruby для работы с рельсами?

Я пытаюсь заставить автозаполнение vim-ruby работать с vim-rails. До сих пор я мог выполнять локальное завершение ключевых слов с существующими методами и переменными в текущем файле, используя <C-x><C-n> (хотя префиксы для переменных и символов экземпляра не сохраняются). Я хотел бы иметь возможность автозаполнения методов Rails, таких как redirect_to и has_many. Однако, когда я пытаюсь использовать всестороннее завершение для выполнения этой задачи, например. redir<C-x><C-o>, Вим говорит мне:

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

person acarroll    schedule 09.04.2015    source источник


Ответы (1)


При дальнейшем расследовании выяснилось, что vim-ruby запускал системный ruby, с которым мне не удалось заставить работать rubygems. Я не совсем уверен, но я считаю, что vim-ruby/autoload/rubycomplete.vim терпел неудачу в эту строку при попытке запросить гем console_app, которого не было в моей системе.

Итак, я пересобрал vim в соответствии с инструкциями в блоге Джона Кэрнса. В статье упоминается RVM, но она в равной степени применима к rbenv или другому рубину, который вы можете использовать.

Ради потомства, в 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 работает как шарм, хотя и немного медленно при первом использовании.

person acarroll    schedule 09.04.2015
comment
Больше не нужно устанавливать mercurial, так как vim находится на github. команда для запуска до ./configure ... равна git clone https://github.com/vim/vim.git && cd vim - person PaddyDwyer; 28.07.2017