Я пытаюсь встать и работать с vim с ruby на рельсах, и у меня возникли некоторые проблемы с омни-завершением.
Я скачал плагин rails.vim для vim, который, кажется, установлен, с вызовом vim
:Rails!
дает
rails.vim 4.3 (Rails-model-arb)
Вызов конкретных функций rails.vim, таких как: Rcontroller работает как мечта, поэтому все выглядит очень многообещающе. Моя проблема связана с омни-завершением и подсветкой синтаксиса, когда я создаю файл ruby, например 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 (локальное завершение ключевого слова, завершение омни, пользователь определенное завершение) из документации по рельсам предполагается, что определенное пользователем завершение должно обеспечивать эту функциональность. При попытке выдает следующую ошибку:
-- 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 работает во многих случаях, например, если я наберу мет, он выдаст мне список с методом 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 ошибка загрузки rails исчезает, но, конечно, нет завершения текста, только пользовательская ошибка завершения.
Это мой первый пост в StackOverflow после большого просмотра, надеюсь, я предоставил все необходимые детали!
Я установил 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, которая уже установлена.
Спасибо за вашу помощь!