这是我遇到过几次的情景:
我从其他程序复制一些文本.转到Emacs并进行一些编辑,然后我将文本粘贴/抽出.Cy to yank and voila ...而不是我打算粘贴的文本.然后我意识到当我移动东西时,我使用了像kill这样的命令line和backward-kill-words,那些被杀死的行和单词现在占据了杀戮戒指.但是输入My不会带回原始复制的文本,因此我需要返回原始程序再次复制文本.如果原始程序关闭,甚至最糟糕的是,我完全丢失了复制的文本.
杀戮线等是这样的基本命令(比如几乎击中删除键),虽然我不介意使用这些命令使杀死环变得有点混乱,但我希望我的原始文本保留在某处杀戮戒指让我最终可以通过键入My几次来找到它.在覆盖剪贴板内容之前,如何让Emacs自动将当前剪贴板内容保留到kill-ring中?
每当你在Emacs中执行kill时,此代码都会自动将选择(从Emacs外部)放到kill-ring中.它已在Linux上测试过,但不应局限于Linux.
(defadvice kill-new (before kill-new-push-xselection-on-kill-ring activate) "Before putting new kill onto the kill-ring, add the clipboard/external selection to the kill ring" (let ((have-paste (and interprogram-paste-function (funcall interprogram-paste-function)))) (when have-paste (push have-paste kill-ring))))
如果你发现自己这么做了,看看包浏览杀死环可能会很有用,它可以让你看到一个很棒的杀环视图(而不是反复打字M-y
).