2014-01-18 2 views
0

после установки eclim и ycm в vim, когда вы начинаете вводить vim, во всплывающем меню вы будете использовать -- user defined completion, вы можете переключиться на завершение Omni, которое настроено для отображения параметров eclim с помощью c-x c-o.make omnifun default in vim insert complete

Как мне сделать vim пользовательский вариант завершения Omni, а не пользовательский параметр по умолчанию без необходимости нажимать c-x c-o каждый раз?

, если я правильно понимаю, цепь должна идти:

completefunc - (вызовы)> omnifunc - (вызовы)> eclim опция

вместо completefunc зовет определенный пользователь завершения по умолчанию, и переключится на omnifunc на сх со

+0

Это параметр YCM, попробуйте документацию. Кроме того, почему бы вам просто не использовать eclipse? – romainl

ответ

1

Это от моей текущей ~/.vim/vimrc:

" Eclim + YouCompleteMe {{{1 
" See <~/MyDocs/SysAdmin/Eclim.otl> 
" This next line recommended by Eclim installation instructions 

autocmd FileType php,java,ruby let g:EclimCompletionMethod = 'omnifunc' 

" For your list of filetypes where you want Eclim semantic completion 
" as the default YCM completion mode: 

autocmd FileType php,java,ruby,c,cpp,perl,python 
    \if &completefunc != '' | let &omnifunc=&completefunc | endif 

" This will allow you to hit <Enter> in normal mode to search for the 
" word under the cursor 

nnoremap <silent> <buffer> <cr> :PhpSearchContext<cr> 
" End Eclim + YouCompleteMe }}}1 

я обнаружил, что мне нужно было & omnifunc = & completefunc, когда я хочу использовать Семантическое завершение Eclim.

Я не уверен, что я полностью понимаю, но, похоже, Eclim ожидает omnifunc и YCM ожидает completefunc, где завершение User = completefunc и Omni завершение = omnifunc

+0

спасибо чувак, но это не решило проблему. –

1

Помимо завершения по умолчанию <C-n> (чей источники могут быть сконфигурированы через опцию 'complete'), Vim имеет два пользовательских пополнения, а именно пользователь и omni завершение. Единственное различие заключается в триггерных ключах (<C-x><C-u> против <C-x><C-o>) и именах опций для имен функций. Для того, чтобы использовать omnifunction с ключами пользовательской функции, просто повторно присвоить имя функции после omnifunc было установлено:

:let &omnifunc = &completefunc 
+0

Я пробовал это, как упоминалось в предыдущем ответе, однако, когда это установлено, всплывающее меню не будет отображаться во время ввода, как оно используется. вам нужно вызвать его. –

+0

Ну, тогда это проблема с YCM; Я предполагаю, что он обеспечивает автозаполнение. –

+0

Существует еще одна разница между завершением «пользователь» и «omni». Я думаю, что заполнение пользователем является глобальным для всех файлов, тогда как omni-completion основано на filetype – mikew