如何阻止Emacs污染"剪贴板?

时间:2014-06-13 00:34:11

标签: emacs editor clipboard copy-paste

Emacs始终将已删除/已删除的内容复制到剪贴板。我经常需要将内容复制并粘贴到Emacs中,但是当我在粘贴之前从Emacs中删除现有内容时,我想要粘贴的内容就会丢失。

我找到的唯一解决方案是使用

(setq save-interprogram-paste-before-kill t)

为了确保在Emacs之外复制的内容在kill-ring中保持可用,并且具有类似问题的人似乎对此解决方案感到满意。令我困扰的是,我必须键入 Cy ,然后重复一次或多次 My 才能找到我要粘贴的内容

所以我的问题是:当我杀死/删除它时,如何阻止Emacs将内容复制到剪贴板(不包括我删除 C-w 的区域的情况)?

4 个答案:

答案 0 :(得分:7)

首先关闭:Emacs有自己的内部"剪贴板"叫" kill ring"它与系统剪贴板分开。

要确保系统剪贴板始终包含您在Emacs 之外复制的最新内容,请添加

(setq x-select-enable-clipboard nil)

到您的.emacs文件。根据Emacs manual,这将

  

防止kill和yank命令访问剪贴板[...]。

无论您在复制内容之后是否已杀死Emacs内的文本,您都可以使用命令x-clipboard-yank剪贴板的内容插入到当前缓冲区。如果需要,可以通过

为此命令设置全局键绑定
(global-set-key (kbd "C-c y") 'x-clipboard-yank)

如有必要,请使用您选择的密钥绑定替换C-c y

答案 1 :(得分:1)

使用delete-region。通常命名为delete的命令不会将这些内容存储在kill-ring中。

答案 2 :(得分:1)

这两个设置可防止X剪贴板污染。所有杀戮戒指在Emacs内保持完整。

  (setq x-select-enable-clipboard nil)
  (setq x-select-enable-primary nil)

答案 3 :(得分:1)

要解决在粘贴替换文本之前需要删除某些内容的特定问题,请使用delete-selection-mode。这样可以在粘贴时删除该区域。