我通过病原体安装了vim-ruby。我想我应该能够在安装它之后使用rubycomplete
中包含的vim-ruby
,但我不是。
没有任何错误,我只是无法使用它。
当我使用:scriptnames
检查加载的脚本时,我可以看到来自vim-ruby
的一些脚本,例如:
~/.vim/bundle/vim-ruby/ftdetect/ruby.vim
但我找不到rubycomplete
。我认为它没有加载,但我不知道为什么。
我在Mac OS X 10.8.3上使用默认的vim7.3,这是我的.vimrc
:
call pathogen#infect()
syntax on
set nocompatible
filetype plugin indent on
set number
set autoindent
set smartindent
set shiftwidth=4
set tabstop=4
set backspace=2
set title
set autoread
set ignorecase
set incsearch
set hlsearch
set smartcase
set smarttab
autocmd FileType python set tabstop=4|set shiftwidth=4|set expandtab
autocmd FileType ruby set tabstop=2|set sw=2
autocmd FileType html set tabstop=2|set sw=2
autocmd BufNewFile,BufRead *.html.erb set filetype=html
autocmd BufNewFile,BufRead *.css.scss set filetype=css
autocmd FileType haml set tabstop=4|set shiftwidth=4|set expandtab
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
如何正确加载vim rubycomplete
?我真的需要这个很棒的功能!
的 - 更新 - 的
1)当我想使用rubycomplete
时:
[].
当我按下tab(我正在使用each
)时,我认为它应该显示each_index
和supertab
这些是Array的默认方法。
但是,vim表示:
-- Keyword completion (^N^P) Pattern not found
2)我的vim是mac OSX的默认值,但ruby+
的输出中有vim --version | grep ruby
。因此,我认为我的vim支持ruby,这意味着我不需要重新编译我的vim。我是对的吗?
3):verbose set omnifunc
的输出是
omnifunc=rubycomplete#Complete
Last set from ~/.vim/bundle/vim-ruby/ftplugin/ruby.vim
答案 0 :(得分:7)
Supertab违反了关键字完成情况。这不是omnicompeltion。要使supertab使用omnicompletion,您需要先使用<C-x><C-o>
或将supertab设置为默认使用omnicompletion。
要使supertab默认使用omnicompletion,您可以将以下行添加到vimrc。
let g:SuperTabDefaultCompletionType = "<c-x><c-o>"
如果您只想要红宝石,可以使用下面的autocmd。
autocmd FileType ruby let g:SuperTabDefaultCompletionType = "<c-x><c-o>"
此外,您可以通过将其设置为上下文模式来设置supertab以在omni完成和另一个完成模式之间自动切换。要进行此设置,您只需将上一行更改为
即可autocmd FileType ruby let g:SuperTabDefaultCompletionType = "context"
如果您打算这样做,我建议您在完全设置时查看:h supertab
。