0

在 vim 中安装 eclim 和 ycm 后,当你开始输入 vim 时会-- user defined completion在弹出菜单中使用,你可以切换到 Omni 补全,它设置为使用 cx co 显示 eclim 选项。

如何在默认情况下使 vim 用户 Omni 完成选项而不是用户定义的选项,而不必每次都按 cx co?

如果我理解正确,链条应该去:

completefunc -(calls)> omnifunc -(calls)> eclim 选项

相反,completefunc 默认调用用户定义的完成,并将在 cx co 上切换到omnifunc

4

2 回答 2

2

除了默认<C-n>补全(其来源可以通过'complete'选项配置),Vim 有两个自定义补全,即用户补全和向补全。唯一的区别在于函数名称的触发键(<C-x><C-u>vs. <C-x><C-o>)和选项名称。要使用用户功能键使用全功能,只需在设置全功能后重新分配功能名称:

:let &omnifunc = &completefunc
于 2014-01-18T20:53:28.883 回答
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 

我发现当我想使用 Eclim 的语义完成时,我需要有 &omnifunc = &completefunc。

我不确定我是否完全理解,但看起来 Eclim 期望omnifunc 而YCM 期望completefunc,其中用户完成= completefunc 和Omni 完成=omnifunc

于 2014-01-18T14:10:06.217 回答