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

lut*_*hur 13 emacs

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

我知道emacs -ns可以做到.

搜索互联网和命令Ch b,我找到了那个方法,但它没有成功.

(setq x-select-enable-clipboard t)

(setq interprogram-cut-function 'x-select-text)
Run Code Online (Sandbox Code Playgroud)

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

elv*_*o79 27

如果您使用的是Ubuntu 12.04或Fedora 21,可以使用几个选项来完成这项工作.

首先,您需要安装xclip

sudo apt-get install xclip
Run Code Online (Sandbox Code Playgroud)

第一种选择:对于Emacs 24

如果您使用的是emacs24,则可以从软件包列表中进行安装

M-x package-list-packages
Run Code Online (Sandbox Code Playgroud)

选择

xclip //mine was version 1.3
Run Code Online (Sandbox Code Playgroud)

在.emacs中添加:

(xclip-mode 1)
Run Code Online (Sandbox Code Playgroud)

第二选择.对于24版之前的emacs

安装xclip.el:在Linux中将 Emacs与X11剪贴板集成

第三种选择.使用答案中显示的@Nicholas Riley代码

要在答案中使用代码,您需要 在Ubuntu中使用pbcopy/pbpaste(命令行剪贴板)

  • 问题是关于OS X的事实有点偶然.问题是,更一般地说,关于让终端emacs的kill ring与剪贴板很好地配合,我相当肯定其他GNU/Linux用户(除了我自己)会在这种情况下找到它.所以这是一个有用的答案,IMO.(这对我来说当然很有用 - 感谢elviejo!) (5认同)
  • 为了使它工作,我还必须将这两行添加到我的.emacs :( add-to-list'load-path"〜/ .emacs.d/elpa/xclip-1.3 /")和(require'xclip) . (5认同)
  • ......除了提问者提到他正在使用OS X之外,所有这些都非常有用. (3认同)
  • @tflutre我爱你 (2认同)

Nic*_*ley 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))))
Run Code Online (Sandbox Code Playgroud)