如何使用elisp/emacs将某些内容复制到系统剪贴板而不是kill ring?

3

我学到了,如果要将某些内容复制到kill缓冲区中,可以使用kill-new缓冲区。

(kill-new (file-truename buffer-file-name))

如何将内容复制到剪贴板?emacs/elisp提供这个功能吗?

新增内容

我得到了两个答案,但是这些答案似乎只适用于X窗口系统。由于我使用的是Aquamacs,它可能不是一个普遍的解决方案,不能解决我的问题。

2个回答

2
(x-set-selection nil (file-truename buffer-file-name))
x-set-selection的文档如下:
该函数在X服务器中设置“选择(selection)”。它接受两个参数:选择类型type和要分配给它的值data。如果data为nil,则表示清除选择。否则,data可以是字符串、符号、整数(或两个整数的cons或两个整数列表的cons)、覆盖层(overlay)或指向同一缓冲区的两个标记的cons。覆盖层或一对标记代表覆盖层中的文本或标记之间的文本。
参数data还可以是有效的非矢量选择值的向量。
每种可能的类型都有自己的选择值,它们独立地更改。通常的type值为PRIMARY、SECONDARY和CLIPBOARD;这些都是符合X Window系统约定的大写名称的符号。如果type为nil,则表示PRIMARY。

2

您可以配置Emacs,使其自动复制到系统剪贴板以及kill ring。函数kill-new调用interprogram-cut-function,如果有的话,通常会将其复制到系统剪贴板。在X Window下,变量x-select-enable-clipboard控制使用主选择还是剪贴板。


我在Mac上使用Aquamacs。如何测试该提示是否有效?将(x-select-enable-clipboard 1)放入.emacs中? - prosseek
这是一个变量,所以可以使用(setq x-select-enable-clipboard t)来设置。或者更好的方式(虽然在这种特定情况下并不重要),由于它是一个自定义选项,可以通过自定义界面进行设置。但我认为在Aquamacs中不存在该选项,因为它不是在X下运行的。 - Gilles 'SO- stop being evil'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接