如何在Windows上的Emacs中保留剪贴板内容?

pol*_*lot 16 emacs elisp

这是我遇到过几次的情景:

我从其他程序复制一些文本.转到Emacs并进行一些编辑,然后我将文本粘贴/抽出.Cy to yank and voila ...而不是我打算粘贴的文本.然后我意识到当我移动东西时,我使用了像kill这样的命令line和backward-kill-words,那些被杀死的行和单词现在占据了杀戮戒指.但是输入My不会带回原始复制的文本,因此我需要返回原始程序再次复制文本.如果原始程序关闭,甚至最糟糕的是,我完全丢失了复制的文本.

杀戮线等是这样的基本命令(比如几乎击中删除键),虽然我不介意使用这些命令使杀死环变得有点混乱,但我希望我的原始文本保留在某处杀戮戒指让我最终可以通过键入My几次来找到它.在覆盖剪贴板内容之前,如何让Emacs自动将当前剪贴板内容保留到kill-ring中?

Tre*_*son 12

每当你在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))))
Run Code Online (Sandbox Code Playgroud)

如果你发现自己这么做了,看看包浏览杀死环可能会很有用,它可以让你看到一个很棒的杀环视图(而不是反复打字M-y).