尽管我知道这篇文章有些陈旧,但是我有一个比上面给出的函数更加优化的函数:
function! g:UltiSnips_Complete()
call UltiSnips#ExpandSnippetOrJump()
if g:ulti_expand_or_jump_res == 0
if pumvisible()
return "\<C-N>"
else
return "\<TAB>"
endif
endif
return ""
endfunction
当然,如果您仅保留Joey Liu提供的设置,然后仅使用此功能,一切都将完美运行!
编辑:另外,我使用另一个函数来增加YouCompleteMe和UltiSnips之间的后退功能。我会告诉你我的意思:
function! g:UltiSnips_Reverse()
call UltiSnips#JumpBackwards()
if g:ulti_jump_backwards_res == 0
return "\<C-P>"
endif
return ""
endfunction
然后将其放在您的.vimrc中:
au BufEnter * exec "inoremap <silent> " . g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"
以及let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
和您一起定!
<S-Tab>
,IIRC的UltiSnips 也是如此。我猜你应该问YCM的作者。