如何在MS Windows上组合Emacs主要/剪贴板复制和粘贴行为?

时间:2012-10-23 17:39:43

标签: emacs copy-paste

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

不幸的是,在MS Windows下使用原生(不是cygwin!)Emacs 24.2.1,这会弄乱我想要的工作方式。

这就是我想要的:

  1. 在Emacs中突出显示(选择)文本会自动将其复制到Windows剪贴板。如果我将其粘贴(Ctrl-V)在另一个Windows应用程序中粘贴它。如果我在Emacs中键入C-y(yank),它会粘贴。如果我在Emacs中单击鼠标中键,则会粘贴。
  2. 杀死Emacs(C-w)会将数据复制到剪贴板。如果我将其粘贴(Ctrl-V)在另一个Windows应用程序中粘贴它。如果我在Emacs中键入C-y(yank),它会粘贴。如果我在Emacs中单击鼠标中键,它会粘贴剪贴板内容,而不是最后选择的文本
  3. 我从另一个Windows应用程序(例如通过Ctrl-C)复制到剪贴板的任何内容都可以通过键入Cy(yank)或中键单击(现在,中间点击)粘贴到Emacs中粘贴最后选择的文本,而不是剪贴板内容。
  4. 总而言之,我认为这意味着在Emacs中删除主要选择和剪贴板之间的区别。我希望一切都在剪贴板上行动!

3 个答案:

答案 0 :(得分:17)

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

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

  • 鼠标-2现已绑定到mouse-yank-primary

这是从主要选择中粘贴,忽略了杀戮戒指。 以前,mouse-2绑定到mouse-yank-at-click

  • 要返回上一个行为,请执行以下操作:

    • select-active-regions更改为nil。
    • mouse-drag-copy-region更改为t。
    • x-select-enable-primary更改为t(仅限X)。
    • x-select-enable-clipboard更改为nil。
    • 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)

答案 1 :(得分: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)
  )

答案 2 :(得分:0)

  • 据我所知,第2点和第3点已经开始工作"开箱即用"?
  • 另外,我认为你对历史不感兴趣(比如 杀人戒指)?
  • 你的意思是突出显示"选择它" (在emacs中称为 区域),或实际突出显示它(给它一个颜色,比如说, 黄色)?

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

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

我认为您会在mouse.el中找到所需的所有信息:

要到达那里,请尝试: C-h k 任何鼠标按钮并单击mouse.el以找出它的定义位置。如果你想要更多" global-set-key"在文件中你可能会找到你正在寻找的东西(我仍然不是100%肯定)