http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Basculer l'indentation automatique pour le collage de code
Contexte
Si vous utilisez les commandes Vim pour coller du texte, rien d’inattendu ne se produit. Le problème ne survient que lors du collage à partir d'une autre application, et uniquement lorsque vous n'utilisez pas une version graphique de Vim. Dans une version console ou terminal de Vim, il n'y a pas de procédure standard pour coller du texte depuis une autre application. Au lieu de cela, le terminal peut émuler le collage en insérant du texte dans la mémoire tampon du clavier, de sorte que Vim pense que le texte a été saisi par l'utilisateur. À la fin de chaque ligne, Vim peut déplacer le curseur pour que la ligne suivante commence par le même retrait que la dernière. Cependant, cela modifiera l'indentation déjà dans le texte collé.
Coller bascule
Mettez ce qui suit dans votre vimrc (changez la clé de votre choix):
set pastetoggle=<F2>
Pour coller depuis une autre application:
- Lancer le mode insertion.
- Appuyez sur F2 (activez l'option "coller").
- Utilisez votre terminal pour coller du texte dans le presse-papiers.
- Appuyez sur F2 (désactive l'option 'Coller').
Ensuite, l'indentation existante du texte collé sera conservée.
Vous n'êtes pas obligé de démarrer le mode insertion en premier, mais si vous êtes en mode normal et disposez d'un mappage pour F2, ce mappage s'appliquera et la fonction 'pastetoggle' ne fonctionnera pas.
Certaines personnes aiment le retour visuel affiché dans la ligne d'état par l'alternative suivante pour votre vimrc:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
La première ligne définit un mappage de sorte que le fait d'appuyer sur F2 en mode normal inversera l'option 'coller', puis affichera la valeur de cette option. La deuxième ligne vous permet d’appuyer sur F2 en mode insertion pour activer / désactiver le «coller». La troisième ligne permet d'afficher si «coller» est activé en mode insertion.