2009-11-25 18 views
5

¿Cómo puedo hacer un comando de emacs para copiar texto (al anillo de la muerte) al agregar? (¿Por qué no existe dicho comando integrado?)emacs comando para anexar al anillo

Appending Kills menciona C-M-w (`append-next-kill ') que me permite agregar comandos kill como C-d o C-k. Pero es para matar textos en lugar de copiarlos.

Respuesta

6

En realidad, no es tal, construido en un comando. C-M-w adjuntará una copia posterior así como una muerte. Entonces marcaría la región que desea copiar, luego escriba C-M-w seguido de M-w y el siguiente C-y tirará de las muertes unidas.

2

¿Puede agregarse al registro para satisfacer sus necesidades?

3

Juego con una variación de esto en el fichero .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

Los diversos comandos kill utilizan un pequeño truco para decidir si agregar o no. Si el comando anterior es el mismo que el comando actual, se agregará; si no, no es así. Las funciones usan el valor de last-command para hacer esto, y manipular este valor es la clave para obtener lo que desea.

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