Les presse-papiers

De Vim-fr

Voici un concept très intéressant et très pratique : Les presse-papiers.

Sur les systèmes GNU, on trouve deux presse-papiers :

  • le premier qui est l'habituel copier, en faisant un <CTRL>+C, ou un Édition→Copier;
  • le deuxième type de presse-papier fonctionne différemment : on sélectionne du texte, et on peux coller ce texte avec le clic du milieu de la souris (principalement présent sous X). C'est très pratique.

Mais sachez que sous Vim, c'est encore plus pratique, et plus complet.

Le principe

Vim possède une multitude de presse-papiers, en fait un pour chaque lettre de l'alphabet. On peut alors stocker 26 morceaux de textes différents. Ces presse-papiers sont très simples à manipuler. Un petit exemple pour bien comprendre :

"ayy

Que fait cette ligne ? C'est très simple : le caractère " désigne l'utilisation du presse papier, le caractère suivant désigne le presse papier que l'on veut utiliser. Ici, "a signifie donc : « Utilisons le presse-papier a ». La suite correspond simplement à la commande utilisée pour ce presse-papier: yy copie la ligne courante. Donc avec ces quatre caractères, nous copions la ligne courante dans le presse-papier a. C'est très simple. Un autre exemple :

"jdd

Cela va couper une ligne, c'est à dire la supprimer, et la rajouter dans le presse papier, du presse-papier j.

Liens avec la suppression

Vous le savez sûrement déjà, tout ce que vous supprimez dans Vim est copié. Cependant, ce que vous savez peut être moins, c'est que c'est copié d'une manière particulière dans les registres.

En effet, si vous supprimez une petite partie de texte (moins d'une ligne), elle est copiée dans le registre "-. Sinon, elle est copiée dans le registre "0, puis le "1, puis le "2 etc ...

Pour savoir ce que contiennent vos registres, vous pouvez utiliser la commande :registers.

Dans le presse-papier de X

Présentation

Un des défauts que je trouvais à Vim, lorsque j'ai commencé à l'utiliser, était le manque d'un presse papier commun avec les autres applications. J'utilisais la souris pour sélectionner le texte dans le terminal, pour le recoller ailleurs. C'était peu pratique, et on était limité à la taille de l'écran pour le nombre de lignes copiées. Et dans les cas où il y avait beaucoup de texte, il fallait le faire en plusieurs fois, ou passer par une autre application. J'ai résolu le problème récemment, grâce à (en) cette page.

Vim dispose de deux presse-papiers communs avec les autres applications graphiques : le PRIMARY (contenant la dernière sélection à la souris) et le CLIPBOARD (contenant la dernière sélection explicitement copiée). Attention il faut que Vim ait été compilé avec le support de X, ce qui n'est pas le cas par défaut sur certaines distributions, voire beaucoup de distributions. Vous pouvez alors essayer de compiler vous-même votre Vim, ou faire une requête pour un package, ou changer de distribution, pour une qui possède ce support.

Installation

Les distributions suivantes disposent de la compilation de Vim avec le support pour X :

  • Archlinux ;
  • Ubuntu ;
  • Debian, en installant vim-gtk ou vim-gnome (on peut toujours l'utiliser en console !).

Needcompletion: cette partie de l'article à besoin de vos contributions pour être continué.

Pour savoir si votre Vim peut ou non utiliser le presse-papier de Vim, il suffit de faire depuis vim :

:echo has('x11') && has('clipboard')

Si la valeur retournée est 1, vim a bien été compilé avec le support des presse-papiers pour X.

Usage

Comment ça marche ? C'est très simple : le presse-papier commun est "+, et la sélection commune est "*. Donc on fait un :

"+yy

pour copier une ligne dans le presse-papier de X.

Pour coller du texte provenant du presse-papier de X, vous pouvez faire ceci :

"+p

Ou si (en) xclip est installé sur votre machine :

:r !xclip -o