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