在vim插入完成中使omnifun默认

时间:2014-01-18 06:53:03

标签: vim autocomplete eclim

在vim中安装eclim和ycm后,当您开始键入vim将在弹出菜单中使用-- user defined completion时,您可以切换到Omni完成,设置为使用c-x c-o显示eclim选项。

默认情况下如何制作vim用户Omni完成选项而非用户定义选项,而不必每次都按c-x c-o?

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

completefunc - (调用)> omn​​ifunc - (电话)> eclim选项

而是completefunc默认调用用户定义的完成,并将切换到c-x上的omnifunc c-o

2 个答案:

答案 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