🌚

使neocomplete和ultisnips共用tab键的方法

Posted at — Aug 11, 2017
#vim #最佳实践

昨天用vim-clevertab换掉了supertab,但是实际使用中总是出莫名其妙的问题。看了一下插件源码,使用全局变量判断状态,这是个很不靠谱的方案,所以还是卸掉了。

下面的配置可以很好的解决问题:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
let g:UltiSnipsExpandTrigger="<c-tab>"
let g:UltiSnipsJumpForwardTrigger="<c-tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
let g:UltiSnipsSnippetsDir='~/.vim/UltiSnips'
let g:ulti_expand_or_jump_res = 0
function! CleverTab()"{{{
    call UltiSnips#ExpandSnippetOrJump()
    if g:ulti_expand_or_jump_res
        return ""
    else
        if pumvisible()
            return "\<c-n>"
        else
            return neocomplete#start_manual_complete()
        endif
    endif
endfunction"}}}
inoremap <silent> <tab> <c-r>=CleverTab()<cr>
snoremap <silent> <tab> <esc>:call UltiSnips#ExpandSnippetOrJump()<cr>

ultisnips没有禁用按键映射的开关,而默认的映射会干扰上述配置,所以这里把默认的映射改成了<c-tab>