Vim : Astuce pour le copier coller

Le 29/12/2011

Dans Développement

Aujourd’hui, faisons un focus sur une des fonctionnalités basiques de Vim que nous pouvons pousser vraiment loin : le copier/coller

Vim est certainement un des seuls éditeurs de texte au monde sur lequel nous puissions faire un article complet à propos des copier /coller, qui sont une des choses que j’ai trouvé les plus lourdes en commençant et qui maintenant, avec quelques connaissances en plus, est une des mieux pensée.

Les commandes de bases

Une des premières choses que l’on cherche à savoir faire sous Vim, c’est le copier/coller. Et généralement, la réponse tombe assez vite:

y

y permet de copier des choses. Appuyer sur y depuis le mode visuel, avec du texte de sélectionné, pour le copier. Depuis le mode commande, yy ou Y copie la ligne complète sur laquelle nous sommes. Dans ce même mode, il est possible d’associer y avec les commandes de positionnement. y$ copie donc jusqu’à la fin de la ligne, yw copie le mot sur lequel nous sommes, …

d

d fonctionne de la même manière que y, mais coupe au lieu de copier. La seul commande qui diffère est D, qui imite d$ au lieu de dd.

p

p permet de coller le texte actuellement dans le presse-papiers de Vim, juste après le curseur. P (la majuscule) va lui, l’insérer avant le curseur. En mode visuel, p remplace la sélection, qui se retrouve dans le presse-papiers.

Le détail qui change tout

Effectuer un remplacement avec p remplace le presse-papiers. C’est très contraignant quand on veut remplacer plusieurs lignes par la même chose, mais bon, c’est pas trop grave, il suffit de supprimer ce qu’on veut supprimer, puis coller ensuite.

Mais voilà, problème : les différentes techniques de suppression (que ce soit sx, ou autre) remplacent TOUTES le presse-papiers.

La technique consiste donc à coller ce que l’on veut coller, puis le recopier, descendre sur le truc suivant à remplacer, coller, … Méthode vraiment très très lourde, j’en conviens. Heureusement, il y a mieux.

Comment faire plus simple ?

Pour comprendre comment faire mieux, il faut déjà comprendre comment marche le presse-papiers de Vim.

Le presse-papiers de Vim n’est en réalité pas unique, mais composé de buffers. Le buffer principal est « . À chaque fois qu’on supprime une chaîne de caractères, elle est placée dans « . Mais il existe aussi d’autres buffers.

Chaque lettre de l’alphabet est un buffer. Quand on copie quelque chose, il est possible de sélectionner le buffer dans lequel on le place, avec « x où x est le buffer choisi.

Nous pouvons donc copier « ayy une ligne, et ensuite la coller avec « ap, sans impacter notre buffer, et donc pouvoir coller notre ligne en remplacement d’une autre aussi souvent que l’on veut !

note : Il est possible, au lieu de remplacer le contenu du buffer, d’y ajouter ce que l’on veut, en mettant la lettre en majuscule. « Ayy vas ajouter une ligne au buffer a.

Quelques petits buffers supplémentaires

Vous êtes vous déjà demandé comment copier/coller en prenant en compte le clipboard global ? Il existe un buffer qui correspond à ce clipboard: +.

« +yy copie une ligne pour le clipboard global, et « +p colle le clipboard global.

Il existe aussi un buffer « poubelle », qui permet de supprimer des choses, en les envoyant dans « null ». C’est le buffer _. « _d$ supprime donc réellement la fin de la ligne, sans l’envoyer dans un buffer.

Vim logo

Le mot de la fin

La gestion des buffers de copier/coller dans Vim est réellement un plaisir. Bien sûr, avec les commandes « de base », ce n’est pas très ergonomique, mais comme tout dans Vim, libre à vous de choisir vos raccourcis, et donc de créer votre environnement ergonomique ultime !