11.8. Coller

Coller veut dire réinsérer du texte précéemment 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 le prochain texte coupé à la dernière entrée dans le 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 seulement un presse-papiers, partagé par tous les tampons, de manière que vous puissiez couper du texte dans un tampon et le coller dans un autre tampon. C'est la manière usuelle 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 le plus récemment coupé. Il place le curseur à la fin du texte, et place la marque au début du texte. Chapitre 11.

C-u C-y laisse le curseur au début du texte, et place la marque à la fin. Ceci arrive lorsque l'argument est spécifié avec juste C-u. Tout autre argument, comme C-u suivi de chiffres, précise une coupe précédente à coller. (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 simple C-y colle tout le texte d'un bloc, comme il l'étatit 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 jusqu'au point ajoutent le texte au début. De cette manière, une séquence mixée de commandes de coupe en avant ou en arrière placent tout le texte coupé dans une entrée sans le réarranger. Des arguments numériques ne coupent pas la séquence 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 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 suivant M-w n'ajoute pas au texte que M-w a copié dans le presse-papiers.

11.8.3. Coller des Coupes Précédentes

Pour retrouver du texte coupé qui n'est plus le plus récemment coupé, utilisez la commande M-y (yank-pop). Il prend le texte précédemment collé et le remplace avec le texte d'une coupe précédente. 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 avec la coupe précédente. M-y est autorisé seulement 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. Éventuellement, le pointeur peut atteindre la fin de la pile ; la commande M-y déplace 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 en premier jusqu'à la plus ancienne retenue.

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 le 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 retrouve le texte dans le presse-papiers le nombre d'entrées spécifiées en arrière dans la pile. 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 commence à compter depuis le 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.