http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Activer/désactiver l'indentation automatique pour le collage de code
Contexte
Si vous utilisez des commandes Vim pour coller du texte, rien d'inattendu ne se produit. Le problème survient uniquement lors du collage à partir d'une autre application, et uniquement lorsque vous n'utilisez pas une version de Vim en mode GUI. Dans une console ou une version de terminal de Vim, il n'existe pas de procédure standard pour coller du texte à partir d'une autre application. Au lieu de cela, le terminal peut émuler le collage en insérant du texte dans le tampon du clavier, de sorte que Vim pense que le texte a été saisi par l'utilisateur. Après chaque saut de ligne, Vim peut déplacer le curseur de sorte que la ligne suivante commence avec la même indentation que la précédente. Cependant, cela modifiera l'indentation déjà présente dans le texte collé.
Activer/désactiver le collage
Placez la ligne suivante dans votre vimrc (changez par la touche de votre choix):
set pastetoggle=
Pour coller à partir d'une autre application :
- Commencez le mode insertion.
- Appuyez sur F2 (active l'option 'paste').
- Utilisez votre terminal pour coller le texte du presse-papiers.
- Appuyez sur F2 (désactive l'option 'paste').
Alors l'indentation existante du texte collé sera conservée.
Vous n'avez pas besoin de commencer par le mode insertion, mais si vous êtes en mode normal et que vous avez un mapping pour F2, ce mapping s'appliquera et la fonction 'pastetoggle' ne fonctionnera pas.
Certaines personnes apprécient les retours visuels affichés dans la barre d'état avec l'alternative suivante pour votre vimrc:
nnoremap :set invpaste paste?
set pastetoggle=
set showmode
La première ligne définit un mapping de sorte que en appuyant sur F2 en mode normal inversera l'option 'paste' et affichera ensuite la valeur de cette option. La deuxième ligne vous permet d'appuyer sur F2 en mode insertion pour activer et désactiver 'paste'. La troisième ligne permet d'afficher si 'paste' est activé en mode insertion.