Emacs - 如何将 kill 更改为删除?
Emacs - How to change kill to delete?
我只想C-w和M-w修改kill-ring,连同系统的剪贴板[C-c (复制),C-x(剪切)。
我经常使用 M-d 和 M-DEL,但我不想猛拉然后循环 M-y 每次.
我正在查看 the emacs manual,但它没有回答我的问题。
示例:我想绑定M-d "kill-word"到"delete-word",但是"delete-word"不存在。我该怎么做呢?任何帮助将不胜感激。
我想你想使用 delete-region
而不是 kill-region
这样文本就不会保存在 kill-ring 中,例如。类似于
的内容
(defun my-delete-word (start)
(interactive "d")
(backward-word)
(delete-region (point) start))
我制作了一个宏来将任何终止命令更改为删除命令。
(defmacro delete-instead-of-kill (&rest body)
"Replaces `kill-region' with `delete-region' in BODY."
`(cl-letf (((symbol-function 'kill-region)
(lambda (beg end &optional region)
;; FIXME: account for region arg
(delete-region beg end))))
,@body))
(defun delete-word (&optional arg)
"Like `kill-word', but deletes instead of killing."
(interactive "p")
(delete-instead-of-kill (kill-word arg)))
我使用类似的宏进行复制。
(defmacro copy-instead-of-kill (&rest body)
"Replaces `kill-region' with `kill-ring-save' in BODY."
`(cl-letf (((symbol-function 'kill-region)
(lambda (beg end &optional region)
(kill-ring-save beg end region)
(setq this-command 'kill-region))))
,@body))
来自 EmacsWiki
https://www.emacswiki.org/emacs/BackwardDeleteWord
(defun delete-word (arg)
"Delete characters forward until encountering the end of a word.
With argument, do this that many times."
(interactive "p")
(if (use-region-p)
(delete-region (region-beginning) (region-end))
(delete-region (point) (progn (forward-word arg) (point)))))
(defun backward-delete-word (arg)
"Delete characters backward until encountering the end of a word.
With argument, do this that many times."
(interactive "p")
(delete-word (- arg)))
(global-set-key (read-kbd-macro "<M-DEL>") 'backward-delete-word)
我只想C-w和M-w修改kill-ring,连同系统的剪贴板[C-c (复制),C-x(剪切)。
我经常使用 M-d 和 M-DEL,但我不想猛拉然后循环 M-y 每次.
我正在查看 the emacs manual,但它没有回答我的问题。
示例:我想绑定M-d "kill-word"到"delete-word",但是"delete-word"不存在。我该怎么做呢?任何帮助将不胜感激。
我想你想使用 delete-region
而不是 kill-region
这样文本就不会保存在 kill-ring 中,例如。类似于
(defun my-delete-word (start)
(interactive "d")
(backward-word)
(delete-region (point) start))
我制作了一个宏来将任何终止命令更改为删除命令。
(defmacro delete-instead-of-kill (&rest body)
"Replaces `kill-region' with `delete-region' in BODY."
`(cl-letf (((symbol-function 'kill-region)
(lambda (beg end &optional region)
;; FIXME: account for region arg
(delete-region beg end))))
,@body))
(defun delete-word (&optional arg)
"Like `kill-word', but deletes instead of killing."
(interactive "p")
(delete-instead-of-kill (kill-word arg)))
我使用类似的宏进行复制。
(defmacro copy-instead-of-kill (&rest body)
"Replaces `kill-region' with `kill-ring-save' in BODY."
`(cl-letf (((symbol-function 'kill-region)
(lambda (beg end &optional region)
(kill-ring-save beg end region)
(setq this-command 'kill-region))))
,@body))
来自 EmacsWiki https://www.emacswiki.org/emacs/BackwardDeleteWord
(defun delete-word (arg)
"Delete characters forward until encountering the end of a word.
With argument, do this that many times."
(interactive "p")
(if (use-region-p)
(delete-region (region-beginning) (region-end))
(delete-region (point) (progn (forward-word arg) (point)))))
(defun backward-delete-word (arg)
"Delete characters backward until encountering the end of a word.
With argument, do this that many times."
(interactive "p")
(delete-word (- arg)))
(global-set-key (read-kbd-macro "<M-DEL>") 'backward-delete-word)