Відповідно до документації:
<C-delete>
запускає команду kill-word (знайдена на глобальній карті), яка є інтерактивно складеною функцією Lisp в ‘simple.el’
.
Це обов'язково <C-delete>, M-d
.
(ARG вбивства)
Вбийте символів вперед, поки не зіткнетеся з кінцем слова. З аргументом ARG, робіть це багато разів.
Тепер переглянемо вихідний код:
(defun kill-word (arg)
"Kill characters forward until encountering the end of a word.
With argument ARG, do this that many times."
(interactive "p")
(kill-region (point) (progn (forward-word arg) (point))))
Потім, усередині документації для kill-region
функції ми знаходимо:
Убити ("вирізати") текст між точкою та позначкою.
This deletes the text from the buffer and saves it in the kill ring
. Команда [yank] може отримати її звідти. (Якщо ви хочете зберегти регіон, не вбиваючи його, використовуйте [kill-ring-save].)
[...]
Програми Lisp повинні використовувати цю функцію для вбивства тексту. (Щоб видалити текст, використовуйте delete-region
.)
Тепер, якщо ви хочете піти далі, це деяка функція, яку ви можете використовувати для видалення без копіювання на kill-ring:
(defun my-delete-word (arg)
"Delete characters forward until encountering the end of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(delete-region
(point)
(progn
(forward-word arg)
(point))))
(defun my-backward-delete-word (arg)
"Delete characters backward until encountering the beginning of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
(interactive "p")
(my-delete-word (- arg)))
(defun my-delete-line ()
"Delete text from current position to end of line char.
This command does not push text to `kill-ring'."
(interactive)
(delete-region
(point)
(progn (end-of-line 1) (point)))
(delete-char 1))
(defun my-delete-line-backward ()
"Delete text between the beginning of the line to the cursor position.
This command does not push text to `kill-ring'."
(interactive)
(let (p1 p2)
(setq p1 (point))
(beginning-of-line 1)
(setq p2 (point))
(delete-region p1 p2)))
; bind them to emacs's default shortcut keys:
(global-set-key (kbd "C-S-k") 'my-delete-line-backward) ; Ctrl+Shift+k
(global-set-key (kbd "C-k") 'my-delete-line)
(global-set-key (kbd "M-d") 'my-delete-word)
(global-set-key (kbd "<M-backspace>") 'my-backward-delete-word)
Надано ErgoEmacs
undo
. Дика здогадка, хоча.