2010-12-11 11 views
7

希望有人能夠幫助我從Vim中的omnicomplete中發現一些相當不穩定的行爲,並使用Ruby & HTML。Vim:Ruby和HTML omnicomplete不顯示本地方法/變量

的問題是,按Ctrl +X按Ctrl +Ø似乎返回非本地命令。方法&變量名被省略。如果鍵入按Ctrl +X按Ctrl +P它們顯示爲預期,但全只是沒有接他們。

有幾件事情:

  • --version證實,紅寶石安裝(+ruby
  • 我已經rails.vim,snipmate並安裝SUPERTAB - 只有這些安裝的插件我可能會認爲那可能亂用紅寶石omnifunc
  • HTML全有同樣的問題
  • 腓& Python的全方位依然工作得很好
  • 我試着刪除下面& Ruby的相關部分的HTML,但都沒有區別 - 的行爲是一樣的

.vimrc低於 - 大加讚賞

" Set backup directory so that .swp files aren't stored in work folders 
set backup 
set backupdir=$HOME/temp/vim_backups/ 
set directory=$HOME/temp/vim_swp/ 

filetype on 
filetype off 

call pathogen#runtime_append_all_bundles() 

syntax on 
filetype plugin indent on 

" Necessary for lot of cool vim things 
set nocompatible 

set tabstop=2 
set smarttab 
set shiftwidth=2 
set autoindent 
set expandtab 
set wildmode=longest,list,full 
set wildmenu 

" Backspace should delete 
set backspace=2 " make backspace work like most other apps 

" For HTML 
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags 

" For Ruby 
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 
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1 


" improve autocomplete menu color 
highlight Pmenu ctermbg=230 gui=bold 

" Remaps 'jj' to escape insert mode 
inoremap jj <Esc> 

" When closing tab, remove the buffer 
set nohidden 

" SuperTab Options 
" let g:SuperTabDefaultCompletionType="<C-x><C-o>" 
let g:SuperTabDefaultCompletionType="context" 
let g:SuperTabContextDefaultCompletionType="<C-X><C-O>" 

" Close tags 
imap ,/ </<C-X><C-O> 

回答

14

以下是相關選項:

set omnifunc=rubycomplete#Complete 
let g:rubycomplete_buffer_loading = 1 
let g:rubycomplete_classes_in_global = 1 

你可能會錯過complete_buffer_loading。

可以在自動命令的爲Ruby文件類型把這個包:

if has("autocmd") 
    autocmd FileType ruby set omnifunc=rubycomplete#Complete 
    autocmd FileType ruby let g:rubycomplete_buffer_loading=1 
    autocmd FileType ruby let g:rubycomplete_classes_in_global=1 
endif 
0

我用CTRL-X CTRL-N和任何幫助CTRL-X CTRL-P當我需要自動完成。它總是適用於每種語言的每種文件類型,這就是我所能問的。