我正在使用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来自哪里,它意味着什么?
答案 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上,没有CLIPBOARD
与PRIMARY
选择的概念,因此设置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模式更能解决我的问题。