2009-11-25 6 views
5

Comment puis-je créer une commande emacs pour copier du texte (sur l'anneau d'arrêt) en l'ajoutant? (Pourquoi n'y a-t-il pas une telle commande intégrée?)Commande emacs à ajouter à l'anneau

Appending Kills mentionne C-M-w («append-next-kill») qui me permet d'ajouter des commandes kill telles que C-d ou C-k. Mais c'est pour tuer des textes au lieu de les copier.

Répondre

6

En fait, il y a une telle commande interne. C-M-w ajoutera une copie ultérieure ainsi qu'un kill. Donc, vous marquez la région que vous souhaitez copier, puis tapez C-M-w suivi de M-w et le prochain C-y va tordre les tués joints.

2

Peut-append-à-registre répondre à vos besoins?

3

Jouer avec une variation de ceci dans votre fichier .emacs ...

(defun append-kill-line (&optional arg) 
    "Append kill-line to current kill buffer, prefix arg kills from beginning of line." 
    (interactive "P") 
    (append-next-kill) 
    (kill-line arg) 
) 

(define-key global-map "\C-x\C-m" 'append-kill-line) 
1

Les différentes commandes kill utilisent une petite astuce pour décider d'ajouter ou non. Si la commande précédente est la même que la commande en cours, elle s'ajoutera; sinon, ce n'est pas le cas. Les fonctions utilisent la valeur last-command pour ce faire, et la manipulation de cette valeur est la clé pour obtenir ce que vous voulez.

(defun copy-region-as-kill-append (beg end) 
    (interactive "r") 
    (let ((last-command 'kill-region)) 
    (copy-region-as-kill beg end))) 
Questions connexes