昨天用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>