2009-03-20 13 views
6

J'utilise des cartes alors que le code I:Comment éviter les supports supplémentaires d'apparaître alors que je coller dans Vim

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

de sorte que lorsque je mets « (», il écrit: «() » (même chose pour " . [ » et "{") Le problème est que quand je coller quelque chose dans Vim:

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

Je reçois

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

Est-il possible d'éviter les crochets supplémentaires?

Répondre

11

Vous souhaitez l'option 'paste'; Réglez-le avec :set paste. Il désactive les mappages de mode d'insertion, les abréviations et d'autres options de formatage automatique.

L'autre chose est qu'il ya plusieurs façons de coller:

  • "+p
  • :set mouse=a puis clic du milieu
  • mode d'insertion, <C-R>+
  • :a! puis utilisez la commande coller de terminal

Tout cela w mal coller correctement. Le seul qui confond vim est lorsque vous utilisez la commande "paste" de votre terminal sans le prévenir au préalable.

+1

Merci. C'est ce que je voulais. Si je veux activer mes abréviations, je dois faire: set nopaste –

+0

Une chose que j'aime faire est de lier une touche de fonction pour basculer une option, comme 'map : set paste!^M'. (Vous devez taper le^M comme .) –

+1

Vous pouvez utiliser au lieu de taper^M en utilisant^V, c'est plus portable. Vous pouvez également utiliser le mappage suivant: carte : définir la pâte! coller? de sorte qu'après avoir appuyé sur F4, vous verrez le nouvel état de l'option. – Paul