2011-06-09 7 views
2

Rubyでvimを使って作業を始めようとしていて、オムニ完了に関するいくつかの問題があります。 Rcontroller:ruby​​ omnicompletionでrails.vimに "Error loading rails environment"エラーが表示される

私はvimの呼び出し

:Rails! 

で、インストールしていると思わvimのためのrails.vimプラグインを、ダウンロードしているが

rails.vim 4.3 (Rails-model-arb) 

のような特定の機能をrails.vimの呼び出しできますそれはすべて非常に有望に見えるので、夢を働く。私はsupertabが私を提供するために、オムニ補完レールを使用することを期待

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 

私は、次の内容での例ブログ/アプリ/モデル/ post.rb用のファイルをルビー時に私の問題は、オムニ補完と構文の強調表示であります"have_many"などのオプションを使用しています。私は、vimsの補完型のそれぞれについて、ユーザーが定義した補完でこれを提供する必要があることを示唆する、レールのドキュメントから(キーワードローカル補完、オムニ補完、ユーザー定義補完)機能性。オムニ補完(^ O^N^P) - 私はそれが私に を与える別の時間をしようとすると、

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

:私が最初にしようとすると、

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

:しようとすると、それは次のエラーを与えますパターンが見つかりません

しかし、omnicompletionは多くの場合に機能します。例えば、私がmethを入力すると、メソッドmethod_defined ?, method_missing、メソッドから選択することができます。

私のvimファイルを処理するために病原体を使用していますが、私の.vimrcファイルには以下のrelavent行があります。

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はsupertabが正常に動作し、私はそのような長い時間を費やしてきた

〜/て.vim /バンドル/ supertabの下にインストールされ、/〜/て.vim /バンドルにあるディレクトリをレールこの小さなものを理解しようとしましたが、成功しませんでした!私はこれからどこに行くべきなのか誰にも分かりますか?私はそれが.vimrcファイルのsupertab定義、またはruby omni-completion定義を使ってやることができると信じています。

私はもちろん、テキストのない完了、のみユーザ定義の完了エラーはありませんが、エラーのローディング・レール・エラーが消えファイルの.vimrcからライン

autocmd FileType ruby,eruby let g:rubycomplete_rails = 1 

を削除した場合。

これは、多くの表示の後に私の最初の投稿StackOverflowです、私はすべてのrelaventの詳細を提供して願っています!

私はMacPortsでvimをインストールしましたが、現在のバージョンはvim @ 7.3.146_0 + huge + perl + python27 + ruby​​です。rubyは有効ですが、macportsは独自のバージョンをインストールしたいので、1.8.7は/ opt /私がrvmを使っていても1.9.2にレール3.0.7がインストールされているにもかかわらず、ローカル/ルビー。これはおそらく問題だろうか?私はすでにインストールされているバージョンのrubyを使用するようにmacportsに指示する方法を見つけていません。

ありがとうございました!

+0

私はこの能力が期待されているかどうか疑問に思っていますか? rails.vimがコンテキスト固有の補完を可能にするかどうか、つまりhas_manyが特定の場所に属していることを認識できるかどうかを明確にすることはできますか?また、モデルにメソッドを追加して、@ postと一緒に使用しようとしました。 一度@postがインスタンス化されましたが、これを許可していないようですが、確かにこれはrails.vimが提供する機能ですか? –

+0

それは私の道で何かすることができますか? rails.vimが明らかに認識されているので、何も追加する必要はないと思いました(したがって、Rcontroller Postは完璧に働いています) –

答えて

1

私はルビーの完了は、Javaのラインで上書きされていると思う:私はその行をコメントアウトした場合、私はモデルに行くとにhas_manyを自動補完する

has_<C-X><C-U> 

を行うことができます

:setlocal completefunc=javacomplete#CompleteParamsInfo 

を(あなたも。autocmd FileType ruby,eruby ...ラインを必要はありません)そして、はい、それは考慮にあなたのモデルでnamed_scopeが、number_to_currencyや友人を与えることn<C-X><C-U>でスマートです。

しかし、rails.vimはカスタムメソッドを自動補完しませんが、そこにはプラグインが追加されているはずです。

+0

良い点は、もちろんrails.vimの問題ではなく.vimrc、問題です!乾杯。 –

関連する問題