Emacs 不将M-Del删除的单词加入粘贴板
Posted cobbliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Emacs 不将M-Del删除的单词加入粘贴板相关的知识,希望对你有一定的参考价值。
原文:https://jblevins.org/log/clipboard
I use a clipboard manager called Copied that syncs previously copied text across all my devices. Short of having an OS X version of Drafts, this is a very efficient way to get text from a Mac to an ios device. However, when I’m working in Emacs, my clipboard history quickly becomes cluttered because every bit of text I “kill” in Emacs gets “copied” to the system pasteboard and then synchronized to all of my devices.
Indeed, every time I select a sentence or paragraph and kill it with C-w (kill-region
), that text gets added to the clipboard history. Worse still, every time I press M-DEL (backward-kill-word
) to kill the previous word, that word also gets added to my history. I use these commands a lot, so even with a history of 100 previous items, the important items in my history are quickly buried under a heap of words and phrases that I have killed in Emacs during the normal process of writing and editing text.
This is mitigated to some extent by the fact that Copied allows one to quickly filter the history by just typing a search string in the main window. However, I discovered today that Emacs has a minor mode called delete-selection-mode
and when this mode is active, the region is replaced when a character is inserted or deleted (e.g., with backspace). The practical implication of this is that one can remove the active region by pressing DEL rather than C-w:
By default, text insertion occurs normally even if the mark is active–for example, typing a inserts the character ‘a’, then deactivates the mark. If you enable Delete Selection mode, a minor mode, then inserting text while the mark is active causes the text in the region to be deleted first. To toggle Delete Selection mode on or off, type M-x delete-selection-mode.
Source: GNU Emacs Manual, section 11.3.
Also see DeleteSelectionMode on the EmacsWiki and in the Emacs FAQ. To summarize, if one uses DEL instead of C-w
to remove text in the active region, it won’t end up in the kill ring or clipboard history. Somehow this slipped by me, but delete-selection-mode
is enabled by default in Emacs 24 and 25.
Replacing M-DEL
with an alternative that deletes without adding to the kill ring is less obvious. Without adding a custom function, a long version would be C-SPC M-b DEL
. This sequence activates the mark1, moves the point backward by one word, and deletes the active region. If you find yourself using this often, it might be better to define a backward-delete-word
function to your init.el
(source):
(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))))
I moved the default backward-kill-word
binding to C-M-DEL
and set M-DEL
to this new function:
(global-set-key (kbd "C-M-<backspace>") ‘backward-kill-word) (global-set-key (kbd "M-DEL") ‘backward-delete-word)
以上是关于Emacs 不将M-Del删除的单词加入粘贴板的主要内容,如果未能解决你的问题,请参考以下文章