При переключении файлов с помощью минибуфера (C-x C-f) я часто использую M-Backspace для удаления слов в пути. Emacs автоматически помещает то, что я удаляю в кольцо убийства. Это может раздражать, поскольку когда-то я перехожу к другому файлу, чтобы вставить что-то, и в итоге я вставляю часть пути к файлу. Я знаю, что есть обходные пути, а другой код по-прежнему находится в кольце kill и т.д., Но я просто хотел бы отключить эту функциональность.
Удалите слово, не добавляя его в kill-ring в Emacs
Ответ 1
Emacs не имеет функции backward-delete-word
, но достаточно легко определить один:
(defun backward-delete-word (arg)
"Delete characters backward until encountering the beginning of a word.
With argument ARG, do this that many times."
(interactive "p")
(delete-region (point) (progn (backward-word arg) (point))))
Затем вы можете привязать M-Backspace к backward-delete-word
в minibuffer-local-map
:
(define-key minibuffer-local-map [M-backspace] 'backward-delete-word)
Ответ 2
См. обсуждение этой темы в [email protected]
:
http://lists.gnu.org/archive/html/help-gnu-emacs/2011-10/msg00277.html
Обсуждение сводится к этому короткому решению:
(add-hook 'minibuffer-setup-hook'
(lambda ()
(make-local-variable 'kill-ring)))