如何将所选区域粘贴到emacs之外?

时间:2011-03-13 08:03:28

标签: emacs

我正在使用Mac OS和emacs -nw(终端模式)。 我不知道如何在emacs之外粘贴东西(由emacs -nw中的M-w实现)。

我知道emacs -ns可以做到。

搜索互联网和命令C-h b,我发现了这种方法,但它没有用完。

(setq x-select-enable-clipboard t)

(setq interprogram-cut-function 'x-select-text)

我不太了解interprogram-cut-function的论点。 x-select-text来自哪里,它意味着什么?

3 个答案:

答案 0 :(得分:27)

如果您使用的是Ubuntu 12.04或Fedora 21,可以使用以下几种方法。

首先你需要安装xclip

sudo apt-get install xclip

第一个选项:适用于Emacs 24

如果您使用的是emacs24,则可以从软件包列表

进行安装
M-x package-list-packages

选择

xclip //mine was version 1.3

在.emacs中添加:

(xclip-mode 1)

第二个选项。对于版本24之前的emacs

安装xclip.el: Integrating Emacs with the X11 Clipboard in Linux

第三选项。使用答案中显示的@Nicholas Riley代码

使用您需要的答案中的代码  pbcopy / pbpaste in Ubuntu (command line clipboard)

答案 1 :(得分:10)

x-select-text仅在您在GUI中运行Emacs时使用。 (Emacs将Mac / Windows粘贴板/剪贴板API映射到X11模型,因此名称)。您可以随时使用C-h f来查找有关此类函数的更多信息,并查看其定义(如果它是用elisp编写的。

在Mac上,没有CLIPBOARDPRIMARY选择的概念,因此设置x-select-enable-clipboard没有意义。

运行emacs -nw的全部意义在于它不与窗口系统交互。当有足够的图形化Emacsen在Mac上运行得非常好时,为什么要在终端中使用Emacs?

那就是说,如果你真的想把终端Emacs连接到Mac粘贴板,你可以这样做:

(setq interprogram-cut-function
      (lambda (text &optional push)
    (let* ((process-connection-type nil)
           (pbproxy (start-process "pbcopy" "pbcopy" "/usr/bin/pbcopy")))
      (process-send-string pbproxy text)
      (process-send-eof pbproxy))))

答案 2 :(得分:1)

如果你想要一种方法将emacs区域的内容有时放在剪贴板 ,而不是每次你做一个emacs猛拉(这导致剪贴板内容被覆盖所有的时间),你应该检查一个相关问题的答案:

https://stackoverflow.com/a/19625063/3363328

我发现它比设置xclip模式更能解决我的问题。