rails.vim с рубрикой omnicompletion, выдающей ошибку "Ошибка загрузки среды rails"

Я пытаюсь встать и работать с vim с ruby ​​на рельсах, и у меня есть несколько проблем с omni-дополнением.

Я скачал плагин rails.vim для vim, который, кажется, установлен, с вызовом vim

:Rails! 

дает

rails.vim 4.3 (Rails-model-arb)

Призывает rails.vim к определенным функциям, таким как:Rcontroller работает как мечта, поэтому все выглядит очень многообещающе Моя проблема с омни-завершение и подсветка синтаксиса, когда я рубин файл, например Blog / app / models / post.rb со следующим содержанием

1 class Post < ActiveRecord::Base
2   validates :name,  :presence => true
3   validates :title, :presence => true,
4                     :length   => { :minimum => 5 }
5   has_[<C-X><C-O> or <C-X><C-U> or <C-X><C-P>]
6 end

Я ожидаю, что supertab использует омни-завершение rails, чтобы предоставить мне такие опции, как "has_many" и т. Д. Я немного запутался в том, что делает каждый из типов завершения vims (локальное завершение ключевого слова, завершение omni, завершение, определенное пользователем) из документации на рельсы предполагается, что заданное пользователем завершение должно обеспечивать эту функциональность. При попытке выдает следующую ошибку:

-- User defined completion (^U^N^P) Pattern not found
Press ENTER or type command to continue

когда я попробую в первый раз:

Error loading rails environment
Problem loading class "Post", was it already completed?
Press ENTER or type command to continue

когда я пытаюсь в другой раз, это дает мне - Омни завершения (^O^N^P) Шаблон не найден

Однако omnicompletion работает во многих случаях, например, если я введу meth, он выдаст мне список методов, method_defined?, method_missing, методов на выбор.

Я использую pathogen для обработки моих файлов vim, но мой файл.vimrc содержит следующие соответствующие строки.

set nocompatible
call pathogen#helptags()
call pathogen#runtime_append_all_bundles()
syntax on

filetype plugin on
filetype indent on

"set ofu=syntaxcomplete#Complete
set completeopt+=longest,menu,preview

" For code completion with a drop down menu
"au FileType python set omnifunc=pythoncomplete#Complete
let g:SuperTabDefaultCompletionType = "context"
let g:SuperTabContextDefaultCompletionType = "<c-x><c-o>"
let g:SuperTabContextTextOmniPrecedence = ['&omnifunc', '&completefunc']
let g:SuperTabCompletionContexts = ['s:ContextText', 's:ContextDiscover']
let g:SuperTabContextDiscoverDiscovery = ["&completefunc:<c-x><c-u>", "&omnifunc:<c-x><c-o>"]

" If you prefer the Omni-Completion tip window to close when a selection is
" " made, these lines close it on movement in insert mode or when leaving
" " insert mode
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
autocmd InsertLeave * if pumvisible() == 0|pclose|endif

" Set up java autocompletion
:setlocal completefunc=javacomplete#CompleteParamsInfo
au FileType java set omnifunc=javacomplete#CompleteParamsInfo

" Adding ruby completion??
" Turn on language specific omnifuncs
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1

Файл rails.vim находится в каталоге ~/.vim/bundle/rails, supertab работает нормально и устанавливается в ~/.vim/bundle/supertab

Я потратил так много времени, пытаясь понять эту мелочь, но безуспешно! У кого-нибудь есть идеи о том, куда я должен идти от этого? Я полагаю, что это может быть что-то связанное с определениями супертэбов в файле.vimrc или определениями ruby ​​omni-complete.

Если я уберу строку

autocmd FileType ruby,eruby let g:rubycomplete_rails = 1

из файла.vimrc ошибка загрузки рельсов исчезает, но, конечно, нет завершения текста, только пользовательская ошибка завершения.

Это мой первый пост на Stackru после большого просмотра, надеюсь, я предоставил все необходимые детали!

Я установил vim с MacPorts, и моя текущая версия vim @7.3.146_0+ огромный +perl+python27+ruby, ruby ​​включен, но macports хотел установить свою собственную версию, поэтому 1.8.7 установлен в /opt/local/ruby, несмотря на я использую rvm и имея 1.9.2 с установленными рельсами 3.0.7. Это может быть проблема? Я не нашел способа сказать macports использовать версию ruby, которая уже установлена.

Спасибо за вашу помощь!

1 ответ

Решение

Я думаю, что завершение ruby ​​перекрывается строкой java:

:setlocal completefunc=javacomplete#CompleteParamsInfo

Если я прокомментирую эту строку, я могу пойти в модель и сделать

has_<C-X><C-U>

для автозаполнения has_many. (Вам даже не нужно autocmd FileType ruby,eruby ... линии.)

И да, это умно в этом n<C-X><C-U> дам тебе named_scope в модели, но number_to_currency и друзья в представлении.

Однако rails.vim не будет автоматически завершать пользовательские методы, хотя я уверен, что есть плагины, которые добавляют это.

Другие вопросы по тегам