2009-11-25 3 views
5

Как я могу сделать команду emacs для копирования текста (в кольцо убийства) путем добавления? (Почему нет такой встроенной команды?)Команда emacs для добавления в кольцо

Appending Kills упоминает C-M-w (`append-next-kill '), который позволяет добавлять команды kill, такие как C-d или C-k. Но это за убийство текстов, а не их копирование.

ответ

6

На самом деле, есть такая встроенная команда. C-M-w будет добавлять последующую копию, а также убить. Таким образом, вы бы отметили регион, который хотите скопировать, затем введите C-M-w, а затем M-w, а следующий C-y выдержит объединенные убийства.

2

Может ли заявка на регистрацию соответствовать вашим потребностям?

3

Play с изменением этого в файле .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

Различные команды kill используют небольшой трюк, чтобы решить, добавлять или не добавлять. Если предыдущая команда совпадает с текущей командой, она добавит; если нет, это не так. Для этого функции используют значение last-command, и манипулирование этим значением является ключом к получению того, что вы хотите.

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