Vim: Ruby & HTML omnicomplete не показывает локальные методы / переменные - PullRequest
7 голосов
/ 11 декабря 2010

Надеясь, что кто-то может помочь мне с довольно странным поведением из omnicomplete в Vim с Ruby & HTML.

Проблема в том, что Ctrl + X Ctrl + O , похоже, возвращает только нелокальные команды.Имена методов и переменных не учитываются.Если я наберу Ctrl + X Ctrl + P , они отобразятся, как и ожидалось, но Omni просто не поднимает их.

Несколько вещей:

  • --version подтверждает, что Ruby установлен (+ruby)
  • У меня установлен rails.vim, snipmate и supertab - этотолько установленные плагины, о которых я могу подумать, что это может помешать ruby ​​omnifunc
  • HTML omni имеет ту же проблему
  • Php & Python omni по-прежнему работает просто отлично
  • Я пробовалудаление разделов, связанных с HTML и Ruby ниже, но без разницы - поведение такое же

Ниже .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>

Ответы [ 2 ]

14 голосов
/ 04 января 2011

Вот соответствующие параметры:

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

Возможно, вам не хватает полной_буффера_загрузки.

Вы можете обернуть это в autocmd для типа файла 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 голосов
/ 24 декабря 2010

Я использую CTRL-X CTRL-N и CTRL-X CTRL-P, когда мне нужно автозаполнение. Это всегда работает в каждом типе файла для каждого языка, и это все, что я могу спросить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...