2009-03-20 4 views
6

Ich benutze Karten während Code I:Wie erscheinen zusätzliche Klammern zu vermeiden, während ich in Vim einfügen

imap (()<C-[>i 
imap [ []<C-[>i 
imap { {}<C-[>i 

so dass, wenn ich put "(" es "()" (gleiche Sache für "schreibt . [“und "{") Das Problem ist, dass, wenn ich etwas in Vim einfügen:

for (i = 0; i < count; i++) { 
tab[i] = something() 
} 

I

for (i = 0; i < count; i++) { 
tab[i] = something() 
} 
)]}) 
bekommen

Ist es möglich, die zusätzlichen Klammern zu vermeiden?

Antwort

11

Sie möchten die Option 'paste'; setze es mit :set paste. Es deaktiviert Insert-Modus-Zuordnungen, Abkürzungen und andere Autoformatierungsoptionen.

Die andere Sache ist, dass es mehr Möglichkeiten einzufügen:

  • "+p
  • :set mouse=a und dann die mittlere Maustaste
  • Insert-Modus, <C-R>+
  • :a! und dann Terminals Einfügen-Befehl verwenden

Alle diese w falsch richtig einfügen. Der einzige, der vim verwirrt, ist, wenn Sie den Befehl "Einfügen" Ihres Terminals verwenden, ohne ihn vorher zu warnen.

+1

Vielen Dank. Das wollte ich. Wenn ich meine Abkürzungen aktivieren möchte, muss ich folgendes tun: set nopaste –

+0

Eine Sache, die ich tun möchte, ist eine Funktionstaste zu binden, um eine Option wie 'map : set paste!^M' zu aktivieren. (Sie müssen das^M eingeben als .) –

+1

Sie können anstelle von^M mit^V verwenden, das ist tragbarer. Sie können auch die folgende Zuordnung verwenden: Karte : Paste einstellen! Einfügen? so dass nach Drücken von F4 der neue Zustand der Option angezeigt wird. – Paul