【问题标题】:How can i paste the selected region outside of emacs?如何将所选区域粘贴到 emacs 之外?
【发布时间】:2011-07-14 09:04:54
【问题描述】:

我使用的是 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 来自哪里,是什么意思?

【问题讨论】:

    标签: emacs


    【解决方案1】:

    如果您使用的是 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)

    【讨论】:

    • ...所有这些在这种情况下都非常有用,除了提问者提到他使用的是 OS X。
    • 问题是关于 OS X 的事实有点偶然。更一般地说,问题是关于让终端 emacs 的 kill ring 与剪贴板很好地配合,我相当肯定其他 GNU/Linux 用户(除了我自己)会在这种情况下找到它。所以这是一个有用的答案,IMO。 (这对我来说当然很有用——谢谢 elviejo!)
    • @edam 这就是重点。将信息留在这里,以便其他搜索答案的人受益。很高兴它对你有用。
    • 为了使它工作,我还必须将这两行添加到我的 .emacs 中:(add-to-list 'load-path "~/.emacs.d/elpa/xclip-1.3/ ") 和 (需要 'xclip)。
    • 谢谢!能够在 emacs -nw 中 ggyG 是一种福气)
    【解决方案2】:

    如果您想要一种将 emacs 区域的内容放置到剪贴板的方法只是有时,而不是每次执行 emacs yank(这会导致剪贴板内容被所有时间),您应该查看相关问题的答案:

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

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

    【讨论】:

      【解决方案3】:

      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))))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-16
        • 1970-01-01
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多