14

Emacs 24 改变了复制/粘贴行为的工作方式以符合现代 X 应用程序(请参阅本文“选择更改”下的文章)。他们明确地将主要选择和鼠标中键粘贴与剪贴板复制/粘贴分开。

对我来说不幸的是,在 MS Windows 下使用本机(不是 cygwin!)Emacs 24.2.1,这弄乱了我想要的工作方式。

这是我想要的:

  1. 在 Emacs 中突出显示(选择)文本会自动将其复制到 Windows 剪贴板。如果我将它(Ctrl-V)粘贴到另一个 Windows 应用程序中,它会粘贴。如果我在 Emacs 中键入 Cy (yank),它会粘贴。如果我在 Emacs 中单击鼠标中键,它会粘贴。
  2. 在 Emacs (Cw) 中执行 Kill 会将数据复制到剪贴板。如果我将它(Ctrl-V)粘贴到另一个 Windows 应用程序中,它会粘贴。如果我在 Emacs 中键入 Cy (yank),它会粘贴。如果我在 Emacs 中单击鼠标中键,它会粘贴剪贴板内容,而不是最后选择的文本
  3. 我从另一个 Windows 应用程序(例如,通过 Ctrl-C)复制到剪贴板的任何内容都可以通过键入 Cy(yank)或中键(现在,中键粘贴最后选择的文本,而不是剪贴板内容)粘贴到 Emacs )。

总而言之,我认为这意味着消除 Emacs 中主要选择和剪贴板之间的区别。我希望一切都在剪贴板上起作用!

4

3 回答 3

18

来自 NEWS 的以下条目似乎是相关的:

  • mouse-drag-copy-region现在默认为零。

  • mouse-2 现在绑定到mouse-yank-primary.

这从主要选择中粘贴,忽略了杀伤环。以前,mouse-2 绑定到mouse-yank-at-click.

  • 要返回之前的行为,请执行以下操作:

    • 改为select-active-regions零。
    • 更改mouse-drag-copy-region为 t。
    • 更改x-select-enable-primary为 t(仅在 X 上)。
    • 改为x-select-enable-clipboard零。
    • 绑定mouse-yank-at-click到鼠标 2。

我认为要在 Windows 上获得以前的行为,您需要保留它们x-select-enable-primaryx-select-enable-clipboard当前值,并且可能select-active-regions与您在这里抱怨的行为变化无关。


以下是要放入 .emacs 文件的确切行:

(setq select-active-regions nil)
(setq mouse-drag-copy-region t)
(global-set-key [mouse-2] 'mouse-yank-at-click)
于 2012-10-24T05:52:22.707 回答
1

似乎拖动鼠标对剪贴板没有任何作用。以下补充了这一点,但我不知道它做了什么来指向和标记:

(defadvice mouse-drag-region (after copy-to-clipboard activate)
  (clipboard-kill-ring-save (region-beginning) (region-end))
  (goto-char st) (push-mark nd nil t)
  )
于 2012-10-23T22:18:54.723 回答
0
  • 据我所知,第 2 点和第 3 点已经“开箱即用”了?
  • 另外,我认为您对提供历史记录(例如杀人戒指)不感兴趣?
  • 您的意思是突出显示“选择它”(在 emacs 中称为区域),还是实际上突出显示它(给它一种颜色,比如黄色)?

如果您的意思是选择它,我认为问题在于 Emacs 不知道您的选择何时结束,因此必须将其复制到剪贴板?这就是为什么您会使用Meta-W(Alt-Shift-w) 将其复制到kill-ringEmacs 外部可访问的 .

(我在此处发布此内容是因为我认为这些评论令人困惑,但稍后我将删除或更改此答案)

我想你会在以下位置找到你需要的所有信息mouse.el

要到达那里,请尝试:C-hkany mouse button并单击 mouse.el 以找出它的定义位置。如果您在文件中查找更多“ global-set-key”,您可能会找到您正在寻找的内容(我仍然不是 100% 确定这一点)

于 2012-10-23T18:59:30.693 回答