2013-05-18 50 views
6

我給自己定的映射項,如下所示:如何解決`UltiSnips`插件TAB鍵映射的碰撞在Vim的

" Easy indent for code blocks 
    nmap <tab>  v> 
    nmap <s-tab> v< 
    vmap <tab>  >gv 
    vmap <s-tab> <gv 

這工作不錯。但是,當我安裝UltiSnips由vundle,Tab鍵開不工作作爲縮進動作,它會刪除我選擇多行代碼。我知道這是因爲默認設置爲UltiSnips。我想留在標籤映射UltiSnips觸發它的功能,如何解決使用TAB鍵來縮進代碼塊的問題呢?謝謝!

回答

9

通過:h UltiSnips-triggers看着UltiSnips文檔這樣說:

You can define the keys used to trigger UltiSnips actions by setting global 
variables. Variables define the keys used to expand a snippet, jump forward 
and jump backwards within a snippet, and list all available snippets in the 
current expand context. The variables with their default values are: > 
    g:UltiSnipsExpandTrigger    <tab> 
    g:UltiSnipsListSnippets    <c-tab> 
    g:UltiSnipsJumpForwardTrigger   <c-j> 
    g:UltiSnipsJumpBackwardTrigger   <c-k> 

所以設定這樣的事情在你的〜/ .vimrc`文件:

let g:UltiSnipsExpandTrigger = '<f5>' 

然而,你可能要重新考慮你的<tab>映射。我建議你刪除它們,並使用在正常模式下>><<><視覺模式做初步縮進/取消縮進然後通過.,重做命令重複剛纔的動作。如果您曾經縮進/縮進過多,只需通過u撤消它。

如需更多幫助,請參見:

:h >> 
:h . 
:h u 
+1

在我的情況'tab'與SUPERTAB插件相撞。請注意,如果你使用過VIM然後膩子某些關鍵連擊可能不開箱的工作,如''或''在這種情況下你可以試試'讓G:UltiSnipsExpandTrigger =「」'這還有一個好處被更舒服。當我使用任何功能鍵,如不是'' User

+0

@PeterRincker鍵入'',它只是類型''在插入模式下。但是,它在gvim中有效。但我的問題與膩子堅持:/ –

0

可以觸發更改默認擴展到其他關鍵,但我認爲這是更好地使用地圖如下:

nnoremap > v> 
nnoremap < v< 
vnoremap > >gv 
vnoremap < <gv 

它很適合我。

更重要的是,<Tab>刪除您選擇的多行代碼是UltiSnips的功能。您可以使用UltiSnips片段中的選定文本。看看here