在vim中安装eclim和ycm后,当您开始键入vim将在弹出菜单中使用-- user defined completion
时,您可以切换到Omni完成,设置为使用c-x c-o显示eclim选项。
默认情况下如何制作vim用户Omni完成选项而非用户定义选项,而不必每次都按c-x c-o?
如果我理解正确,链条应该去:
completefunc - (调用)> omnifunc - (电话)> eclim选项
而是completefunc默认调用用户定义的完成,并将切换到c-x上的omnifunc c-o
答案 0 :(得分:2)
除了默认<C-n>
完成(其源可以通过'complete'
选项配置)之外,Vim还有两个自定义完成,即 user 和 omni 完成。唯一的区别在于触发键(<C-x><C-u>
与<C-x><C-o>
)和函数名称的选项名称。要将omnifunction与用户功能键一起使用,只需在设置了omnifunc之后重新分配功能名称:
:let &omnifunc = &completefunc
答案 1 :(得分: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
我发现当我想使用时,我需要有&amp; omnifunc =&amp; completefunc Eclim的语义完成。
我不确定我完全理解,但看起来像Eclim期望omnifunc 和YCM期望completefunc,在哪里 用户完成= completefunc 和 Omni completion = omnifunc