Emacs 25 yank from x windows 带键盘的主剪贴板缓冲区

Emacs 25 yank from x windows PRIMARY clipboard buffer with keyboard

在 linux 环境中使用 Emacs 25,我经常用鼠标复制文本并希望我可以用 Emacs 中的一些命令粘贴复制的文本,但目前我知道的唯一方法是通过mouse middle click 绑定到 mouse-yank-primary.

我试图将它绑定到一个键命令,同时将 mouse-yank-at-point 设置为 true,但这(正如我所怀疑的)需要鼠标事件才能正常工作,我不确定如何让 Emacs 相信鼠标事件是由于击键引起的。

有人有什么想法吗?或者只是知道从主要选择中使用键盘猛拉的正确方法?

尝试这样设置:

(setq select-enable-clipboard t)

这样,正常的 kill/yank 命令(例如 C-w 和 C-y)将与剪贴板一起工作。适用于 X11 和 OSX(我相信 Windows 也适用)。

如果您查阅该变量的文档(例如通过 C-h v),您应该是这样的句子:

You can customize this variable.

其中 "customize" 是您可以单击的 link。这会将您带到 Emacs 的自定义系统,该系统提供了一种更简单、更具指导性的配置 Emacs 的方法。特别是,它将向您展示很多可能与调整相关的控件。即使您不想以这种方式控制您的配置,您也可以将其用作要设置的重要变量以及它们可以设置的内容的指南。

感谢 Christian 的回答,环顾四周后,我找到了 select.el 并想出了以下内容来粘贴到我的 .emacs

;; Pull from PRIMARY (same as middle mouse click)
(defun get-primary ()
  (interactive)
  (insert
   (gui-get-primary-selection)))
(global-set-key "\C-c\C-y" 'get-primary)

编辑:正如 Stefan 所指出的,gui-get-primary-selection(以及更通用的 gui-get-selection)仅在 Emacs 25 及更高版本中可用。在 Emacs 25.1 中,x-get-selection 已过时。

我只是对在 S-insert 上插入次要 X-selection 的 emacs 默认行为感到恼火,并找到了这个线程。我尝试使用 Silfheed 的代码,但 emacs 24 没有像 'gui-get-primary-selection' 这样的功能。所以我浏览了 'mouse-yank-primary' 的源代码并提出了这个替代解决方案:

;; Pull from PRIMARY (same as middle mouse click)
(defun paste-primary-selection ()
  (interactive)
  (insert
   (x-get-selection 'PRIMARY)))
(global-set-key (kbd "S-<insert>") 'paste-primary-selection)

因此 s-insert 将在光标位置插入主要的 X-选择 - 就像在 xterm 中一样...

希望这对您有所帮助。无耻的从上面复制过来的,但是24和25都可以用。我没有在其他版本中测试过。

(if (< emacs-major-version 25)This w
    ;; in emacs 24 or previous
    (defun paste-primary-selection ()
      (interactive)
      (insert (x-get-selection 'PRIMARY))
      )
  ;; in emacs 25 and above
  (defun paste-primary-selection ()
    (interactive)
    (insert (gui-get-primary-selection)))
  )
(global-set-key (kbd "S-<insert>") 'paste-primary-selection)