3

我通过病原体安装了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

如何使我的 vimrubycomplete正确加载?我真的需要这个很棒的功能!

- 更新 -

1)当我想使用时rubycomplete

[].

当我按下制表符(我正在使用)时,我认为它应该显示类似eachand的内容,这是 Array 的默认方法。但是,vim 显示:each_indexsupertab

-- 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
4

1 回答 1

8

Supertab 已默认为关键字完成。这不是万能的。要让 supertab 使用omnicompletion,您需要先使用<C-x><C-o>或将supertab 设置为默认使用omnicompletion。

要让 supertab 默认使用omnicompletion,您可以将以下行添加到您的vimrc。

let g:SuperTabDefaultCompletionType = "<c-x><c-o>"

如果你只希望它用于 ruby​​,你可以使用下面的 autocmd。

autocmd FileType ruby let g:SuperTabDefaultCompletionType = "<c-x><c-o>"

您还可以通过将 supertab 设置为上下文模式,将其设置为自动在全向完成和另一种完成模式之间切换。要进行设置,您只需将上面的行更改为

autocmd FileType ruby let g:SuperTabDefaultCompletionType = "context"

如果您打算这样做,我建议您在:h supertab完全设置时查看。

于 2013-05-11T04:43:01.317 回答