Ruby on rails rails.vim与ruby Omniquing“;加载rails环境时出错“;错误

Ruby on rails rails.vim与ruby Omniquing“;加载rails环境时出错“;错误,ruby-on-rails,ruby,vim,omnicomplete,rails.vim,Ruby On Rails,Ruby,Vim,Omnicomplete,Rails.vim,我正在尝试使用RubyonRails与vim一起工作,但在omni完成方面遇到了一些问题 我已经下载了vim的rails.vim插件,该插件似乎已经安装,并带有一个vim调用 :Rails! 给予 对rails.vim特定函数的调用,如:Rcontroller工作非常理想,因此看起来非常有前景。我的问题是omni补全和语法突出显示,当我使用ruby文件,例如Blog/app/models/post.rb,包含以下内容时 1 class Post < ActiveRecord::Base

我正在尝试使用RubyonRails与vim一起工作,但在omni完成方面遇到了一些问题

我已经下载了vim的rails.vim插件,该插件似乎已经安装,并带有一个vim调用

:Rails! 
给予

对rails.vim特定函数的调用,如:Rcontroller工作非常理想,因此看起来非常有前景。我的问题是omni补全和语法突出显示,当我使用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
当我第一次尝试时:

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、method_defined?、method_missing和可供选择的方法

我正在使用病原体来处理我的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
从.vimrc文件中,错误加载rails错误消失,但当然没有完成文本,只有用户定义的完成错误

这是我第一次在StackOverflow上发表文章,我希望我已经提供了所有相关的细节

我用MacPorts安装了vim,目前的版本是vim@7.3.146_0+巨型+perl+Python 27+ruby,ruby已启用,但MacPorts希望安装自己的版本,因此1.8.7安装在/opt/local/ruby下,尽管我使用rvm,1.9.2安装了rails 3.0.7。这可能就是问题所在?我还没有找到告诉macports使用已经安装的ruby版本的方法


谢谢你的帮助

我认为ruby完成被java行覆盖了:

:setlocal completefunc=javacomplete#CompleteParamsInfo
如果我把这一行注释掉,我就可以进入一个模型中去做

has_<C-X><C-U>
有_
自动完成有很多。(您甚至不需要使用
autocmd文件类型ruby,eruby…
行。)

是的,
n
将在模型中为您提供
命名范围
,但在视图中为您提供
编号和货币
以及朋友


然而rails.vim不会自动完成定制方法,尽管我确信有插件添加了这一点

我开始怀疑这种能力是否是意料之中的?有人能澄清rails.vim是否允许特定于上下文的完成,即识别可能属于该特定位置的内容吗?我还尝试向模型中添加一个方法,并尝试将其与@post一起使用。一旦@post被实例化,但它似乎不允许这样做,那么这肯定是rails.vim提供的一种功能吗?我的路径是否有问题?我假设它不需要添加任何东西,因为rails.vim显然是公认的(因此Rcontroller Post工作得很好)好的地方,当然这不是rails.vim的问题,而是.vimrc的问题!干杯
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
:setlocal completefunc=javacomplete#CompleteParamsInfo
has_<C-X><C-U>