2013-05-18 10 views
6

ho impostato le chiavi di mappatura come segue:Come risolvere la collisione di TAB mappatura dei tasti di `UltiSnips` plug-in Vim

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

che funziona bene. Tuttavia, quando ho installato UltiSnips da vundle, il tasto Tab non funziona come rientro, rimuoverà i codici multilinea che ho selezionato. So che questo è dovuto all'impostazione predefinita di UltiSnips. Mi piacerebbe rimanere la mappatura Tab per UltiSnips per attivare le sue funzioni, Come posso risolvere il problema dell'utilizzo del tasto TAB per indentare i blocchi di codice? Grazie!

risposta

9

Guardando documentazione UltiSnips via :h UltiSnips-triggers dice questo:

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> 

Quindi impostare qualcosa di simile nel tuo file ~/.vimrc`:

let g:UltiSnipsExpandTrigger = '<f5>' 

Tuttavia si potrebbe voler riconsiderare le vostre <tab> mappature . Suggerisco di rimuoverli e utilizzare >> o << in modalità normale e > o < in modalità visiva per eseguire il rientro/unindent iniziale, quindi ripetere l'azione tramite ., il comando di ripetizione. Se mai indentate/un-indent troppo lontano, basta annullarlo tramite u.

Per maggiori spiegazioni, vedi:

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

Nel mio caso la "scheda" è entrata in collisione con il plugin della supertab. Nota se stai usando vim over putty allora certe combinazioni chiave potrebbero non funzionare fuori dalla scatola come '' o '' in questo caso provare qualcosa come 'let g: UltiSnipsExpandTrigger = ''' che ha anche il vantaggio di essere più comodo da digitare rispetto a '' – User

+0

@PeterRincker Quando uso un qualsiasi tasto funzione ad es. '', digita '' mentre è in modalità inserimento. Funziona comunque con gvim. Ma il mio problema con Putty persiste: / –

0

È possibile modificare il valore predefinito espandere grilletto per altro tasto, ma penso che sia meglio usare le mappe come segue:

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

Funziona bene per me .

Inoltre, <Tab> rimuovere i codici multilinea selezionati è una funzionalità di UltiSnips. Puoi utilizzare il testo selezionato negli snippet UltiSnips. Dai un'occhiata a here.

Problemi correlati