Emacs-如何将kill更改为delete?
我只希望C-w和M-w修改压井环,以及系统的剪贴板[C-C(复制),C-x(剪切)] 我经常使用M-d和M-DEL,但我不想每次都猛拉然后在M-y之间循环 我在看,但它没有回答我的问题Emacs-如何将kill更改为delete?,emacs,edit,Emacs,Edit,我只希望C-w和M-w修改压井环,以及系统的剪贴板[C-C(复制),C-x(剪切)] 我经常使用M-d和M-DEL,但我不想每次都猛拉然后在M-y之间循环 我在看,但它没有回答我的问题 示例:我想将M-d“kill word”绑定到“delete word”,但“delete word”不存在。我怎么做到的?任何帮助都将不胜感激。我想您应该使用删除区域而不是终止区域,这样文本就不会保存在终止环中,例如 (defun my-delete-word (start) (interactive "d
示例:我想将M-d“kill word”绑定到“delete word”,但“delete word”不存在。我怎么做到的?任何帮助都将不胜感激。我想您应该使用
删除区域
而不是终止区域
,这样文本就不会保存在终止环中,例如
(defun my-delete-word (start)
(interactive "d")
(backward-word)
(delete-region (point) start))
我制作了一个宏来将任何kill命令更改为delete命令
(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
(取消删除单词(arg)
“向前删除字符,直到遇到字尾。
在争论中,要多次这样做。”
(交互式“p”)
(如果(使用-region-p)
(删除区域(区域开始)(区域结束))
(删除区域(点)(progn(前向字arg)(点‘‘‘)’)
(取消向后删除字(arg)
“向后删除字符,直到遇到字尾。
在争论中,要多次这样做。”
(交互式“p”)
(删除字(-arg)))
(全局设置键(读取kbd宏“”)“向后删除字)
参见Emacs Wiki,第页。谁否决了这一点?这有什么不好?是因为修理我吗?我还能实现它吗?FIXME指的是kill region
有3个参数,而delete region
只有2个。额外的arg使kill region
忽略args中指定的区域,而使用当前区域。我没有费心解释这一点,所以它不是一个完美的替代品。不过我从来没有遇到过麻烦。而且要明确的是,区域
arg在kill word
中没有使用,因此delete而不是kill
将生成一个等效的delete word
。好的。我确实实现了它,它工作得非常完美。我并不专业,但对我来说这似乎是一个优雅的解决方案。我还是不明白投票结果。
(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)