La copie et le collage de texte sont assurés dans Emacs par les opérations au noms barbares de "killing" et de "yanking". Le principe est que l'utilisateur peut détruire du texte (killing), et le coller à partir du kill-ring dans un buffer.
Le kill-ring est un espace commun à tous les buffers où Emacs range les textes détruits précédemment. On peut le considérer comme une pile circulaire. A chaque fois que l'utilisateur effectue une destruction de texte, le texte en question est rangé à la fin du kill-ring. Lorsqu'une commande de yanking sera exécutée, ce texte sera inséré dans le buffer au niveau du point. Le kill-ring étant commun à tous les buffers, cela en fait un outil pratique pour déplacer du texte d'un buffer à un autre.
Commandes de destruction de texte:
C-k
: détruit la ligne courante à
partir du point
C-w
: détruit la région (du point
jusqu'à la marque)
M-z
caractère: détruit le
texte jusqu'à la première occurrence du caractère
caractère
M-DEL
: Détruit le mot précédent
(ou le mot courant si le curseur est au milieu d'un mot)
M-d
: Détruit le mot suivant (ou le mot
courant si le curseur est au milieu d'un mot)
Commandes de "collage" de texte et de manipulation de kill-ring:
C-y
: insère le bloc de texte situé
à la fin du kill-ring au niveau du point. Avec un
argument numérique, cette fonction insère le bloc
précédent spécifié par l'argument. Par
exemple: C-u 2 C-y
insère l'avant-dernier bloc de
texte détruit.
M-y
: juste après un C-y
, remplace le
texte inséré par le bloc de texte
précédent dans le kill-ring.
M-w
: enregistre la région dans le
kill-ring sans la détruire.
C-M-w
: si la commande suivante est une destruction
de texte, alors le texte détruit sera ajouté à la
fin du dernier bloc de texte enregistré dans le
kill-ring.
Les registres d'Emacs sont des espaces où l'utilisateur peut enregistrer du texte ou une position, et les rappeler plus tard. Chaque registre est repéré par une lettre qui permet d'y accéder ultérieurement. L'utilisation des registres pour conserver du texte est quelque peu analogue à celle des buffers. Mais les registres permettent aussi de revenir à une position précise dans un buffer en sauvegardant une position.
Commandes d'utilisation de buffers:
C-x r SPC
r: sauvegarde la position du point
dans le registre r
C-x r j
r: déplace le point à
la position enregistrée dans le registre r
C-x r s
r: copie la région dans le
registre r
C-x r i
r: insère le texte contenu
dans le registre r
Une autre utilisation des registres est la sauvegarde des noms de
fichiers. Elle se fait par l'intermédiaire d'un code Lisp, et
les fichiers peuvent être rappelés par
l'intermédiaire de la commande C-x r j
r. Cette commande ouvre le fichier spécifié par
le registre r. Le code Lisp correspondant est:
(set-register ?r '(file . nom))Notons que la commande pour ouvrir un fichier dont le nom est obtenu par l'intermédiaire du registre est la même que celle pour déplacer le point à une position spécifiée par un registre:
C-x r j r
.