2013-05-18 3 views
6

ich die Mapping-Tasten festgelegt haben, wie folgt:Wie die Kollision der TAB-Taste Mapping von `UltiSnips` Plugin in Vim lösen

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

Das gut funktioniert. Aber, wenn ich UltiSnips von Vundle installiert habe, funktioniert die Tab-Taste nicht als Einrückung, es entfernt mehrzeilige Codes, die ich ausgewählt habe. Ich weiß, das ist, weil die Standardeinstellung UltiSnips ist. Ich möchte das Tabmapping für UltiSnips bleiben, um seine Funktionen auszulösen, Wie löse ich das Problem der Verwendung der TAB-Taste, um Codeblöcke einzurücken? Vielen Dank!

Antwort

9

bei UltiSnips Dokumentation über :h UltiSnips-triggers Suchen Sie sagt dies:

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> 

So setzen so etwas wie dies in Ihrer ~/.vimrc` Datei:

let g:UltiSnipsExpandTrigger = '<f5>' 

auch immer Sie Ihre <tab> Zuordnungen zu überdenken möchten . Ich schlage vor, Sie entfernen sie und verwenden Sie >> oder << im normalen Modus und > oder < im visuellen Modus, um die erste Einrückung/rückgängig machen dann wiederholen Sie die Aktion über ., die Redo-Befehl. Wenn Sie einen Einzug zu weit zurückziehen, löschen Sie ihn einfach über u.

Weitere Hilfe finden Sie unter:

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

In meinem Fall kollidierte 'tab' mit dem Supertab Plugin. Beachten Sie, wenn Sie vim over putty verwenden, dann funktionieren bestimmte Tastenkombinationen möglicherweise nicht wie '' oder '' in diesem Fall versuchen Sie etwas wie 'let g: UltiSnipsExpandTrigger = ''' was auch den Vorteil hat es ist angenehmer zu tippen als '' – User

+0

@PeterRincker Wenn ich irgendeine Funktionstaste verwende, zB '', es gibt nur '' im Einfügemodus. Es funktioniert jedoch in gvim. Aber mein Problem mit Putty besteht weiter: / –

0

Sie die Standard erweitern Auslöser für andere Schlüssel ändern können, aber ich denke, es ist besser, Karten wie folgt zu verwenden:

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

Es funktioniert gut für mich .

Was ist mehr, <Tab> entfernen mehrzeiligen Codes, die Sie ausgewählt haben, ist eine Funktion von UltiSnips. Sie können ausgewählten Text in UltiSnips Snippets verwenden. Schauen Sie sich here an.