11.8. Coller

Coller veut dire réinsérer du texte précédemment coupé. La manière usuelle de déplacer ou de copier du texte est de le couper puis de le coller autre part, une ou plusieurs fois.

C-y

Colle le dernier texte coupé (yank).

M-y

Remplace le texte venant d'être collé avec un texte coupé précédemment (yank-pop).

M-w

Enregistre la région comme dernier texte coupé, sans l'effacer (kill-ring-save).

C-M-w

Ajoute la prochaine coupe à la dernière entrée du presse-papiers (append-next-kill).

11.8.1. Le Presse-Papiers

Tout le texte coupé est sauvegardé dans le presse-papiers, une liste de blocs de texte qui ont été coupés. Il y a un seul presse-papiers, partagé par tous les tampons, de sorte que vous puissiez couper du texte dans un tampon et le coller dans un autre tampon. C'est la manière habituelle de déplacer du texte d'un fichier à un autre. (Section 11.9, pour d'autres moyens.)

La commande C-y (yank) réinsère le texte coupé en dernier. Il place le curseur à la fin du texte, et place la marque au début du texte. Chapter 11.

C-u C-y laisse le curseur au début du texte, et place la marque à la fin. C'est ce qui arrive quand l'argument est spécifié juste par C-u. Tout autre argument, comme C-u suivi de chiffres, demande de coller une coupe antérieure. (Section 11.8.3).

Pour copier un bloc de texte, vous pouvez utiliser M-w (kill-ring-save), qui copie la région dans le presse-papiers, sans la retirer du tampon. C'est approximativement équivalent à C-w suivi de C-x u, exception faite que M-w n'altère pas l'historique des annulations et ne change pas temporairement l'écran.

11.8.2. Ajouter des Coupes

Normalement, chaque commande de coupe empile une nouvelle entrée dans le presse-papiers. Cependant, deux ou plusieurs commandes de coupe à la suite combinent leurs textes dans une seule entrée, pour qu'un seul C-y colle tout le texte d'un bloc, comme il l'était avant d'être coupé.

Dès lors, si vous désirez coller du texte d'un bloc, vous n'avez pas besoin de le couper entièrement en une seule commande ; vous pouvez le couper ligne par ligne, ou mot par mot, jusqu'à ce que vous l'ayez coupé entièrement, et vous pouvez alors le restituer d'un coup.

Les commandes qui coupent en avant depuis le point ajoutent le texte à la fin du texte précédemment coupé. Les commandes qui coupent en arrière à partir du point ajoutent le texte au début. De cette manière, une séquence mixte de commandes de coupe en avant ou en arrière placent tout le texte coupé dans une entrée sans tout mélanger. Des arguments numériques ne brisent pas la suite d'ajout des coupes. Par exemple, supposez que le tampon contienne ce texte :

Voici une ligne -!-d'exemple de texte.

avec le point repésenté par -!-. Si vous tapez M-d M-DEL M-d M-DEL, coupant alternativement en avant et en arrière, vous finissez avec une ligne d'exemple de dans une entrée du presse-papiers, et Voici texte. dans le tampon. (Notez le double espace, que vous pouvez effacer avec M-SPC ou M-q.)

Un autre moyen de couper le même texte est de vous déplacer en arrière de deux mots avec M-b M-b, puis de couper les quatre mots d'un coup avec C-u M-d. Ceci produit exactement le même résultat dans le tampon et dans le presse-papiers. M-f M-f C-u M-DEL coupe le même texte, mais cette fois en allant toujours en arrière ; encore une fois, le résultat est le même. Le texte dans le presse-papiers a toujours le même ordre qu'il avait dans le tampon avant que vous ne le coupiez.

Si une commande de coupe est séparée de la dernière commande de coupe par d'autres commandes (non juste des arguments numériques), elle démarre une nouvelle entrée dans le presse-papiers. Mais vous pouvez la forcer à ajouter en tapant d'abord la commande C-M-w (append-next-kill) juste avant. C-M-w indique à la prochaine commande, si c'est une commande de coupe, d'ajouter le texte qu'il coupe au dernier texte coupé, plutôt que de commencer une nouvelle entrée. Avec C-M-w, vous pouvez couper plusieurs morceaux séparés de texte et les accumuler pour les coller en un seul endroit.

Une commande de coupe après M-w n'ajoute pas au texte que M-w a copié dans le presse-papiers.

11.8.3. Coller des Coupes Antérieures

Pour retrouver du texte coupé qui n'est pas le plus récemment coupé, utilisez la commande M-y (yank-pop). Il prend le texte qui vient d'être collé et le remplace par celui d'une coupe antérieure. Ainsi, pour retrouver le texte de l'avant-dernière coupe, utilisez d'abord C-y pour coller la dernière coupe, puis utilisez M-y pour le remplacer par la coupe précédente. M-y n'est autorisé qu'après un C-y ou un autre M-y.

Vous pouvez voir M-y comme un pointeur sur la "dernière colle" qui pointe sur une entrée du presse-papiers. Chaque fois que vous coupez, le pointeur de "dernière colle" se déplace sur l'entrée nouvellement créée en haut de la pile. C-y colle l'entrée indiquée par le pointeur de "dernière colle". M-y déplace le pointeur de "dernière colle" sur une entrée différente, et le texte dans le tampon change en conséquence. Suffisamment de commandes M-y peuvent déplacer le pointeur sur n'importe quelle entrée de la pile. Au bout d'un moment, le pointeur peut atteindre la fin de la pile ; la commande M-y ramène alors celui-ci sur la première entrée.

M-y déplace le pointeur de "dernière colle" dans la pile, mais il ne change pas l'ordre des entrées dans celle-ci, qui va toujours de la coupe la plus récente vers la plus ancienne.

M-y peut prendre un argument numérique, qui lui indique de combien d'entrées avancer le pointeur de "dernière colle". Un argument négatif déplace le pointeur vers le haut de la pile ; à partir du haut de la pile, il est déplacé à la fin de la pile.

Une fois que le texte recherché est inséré dans le tampon, vous pouvez arrêter les commandes M-y et il restera en place. C'est juste une copie de l'entrée du presse-papiers, vous pouvez donc l'éditer dans le tampon sans modifier le contenu du presse-papiers. Aussi longtemps qu'une nouvelle coupe n'est pas faite, le pointeur de "dernière colle" reste à la même place, et la répétition de C-y collera une autre copie de cette même coupe.

Si vous connaissez le nombre de commandes M-y nécessaires pour retrouver le texte que vous désirez, vous pouvez coller ce texte en une seule étape en utilisant C-y avec un argument numérique. C-y avec un argument remonte la pile en arrière du nombre d'entrées spécifié et retrouve alors le texte dans le presse-papiers. Ainsi, C-u 2 C-y colle l'avant-dernier bloc de texte coupé. C'est équivalent à C-y M-y. C-y avec un argument numérique se déplace à partir du pointeur de "dernière colle", et place ce pointeur sur l'entrée qu'il colle.

La profondeur du presse-papiers est contrôlée par la variable kill-ring-max ; c'est le nombre maximal de blocs sauvegardés dans le presse-papiers.

Le contenu actuel du presse-papiers est stocké dans une variable appelée kill-ring ; vous pouvez examiner le contenu du presse-papiers avec la commande C-h v kill-ring.