如何从OSX上的剪贴板粘贴到Emacs?

如何从OSX上的剪贴板粘贴到Emacs?,emacs,osx-lion,paste,emacs22,Emacs,Osx Lion,Paste,Emacs22,这可能非常简单,但我使用的是Emacs(22.1.1),无法使用Control-Y将文本粘贴到剪贴板中。在Windows?我已将M-ins绑定到h-insert-x-selection,我已将其定义如下: (defun h-insert-x-selection()(交互式) (插入(x选择“剪贴板”)) (全局设置键[(元插入)]“h-insert-x-selection) 在XEmacs上,它是不同的 (全局设置键[(shift-insert)]“x-insert-selection) 我通

这可能非常简单,但我使用的是Emacs(22.1.1),无法使用Control-Y将文本粘贴到剪贴板中。

Windows
?我已将
M-ins
绑定到
h-insert-x-selection
,我已将其定义如下:

(defun h-insert-x-selection()(交互式)
(插入(x选择“剪贴板”))
(全局设置键[(元插入)]“h-insert-x-selection)
XEmacs
上,它是不同的

(全局设置键[(shift-insert)]“x-insert-selection)

我通常使用Shift+insert将其粘贴到emacs缓冲区,但我不知道您的键盘上是否有这些键。

尝试使用
M-x剪贴板yank
命令。如果要将文本复制到剪贴板,必须
M-x剪贴板终止区域


这适用于Linux和Windows,我想在Mac上也是一样。

如果您使用内置的Emacs,那么您就在终端上运行Emacs。“剪贴板”是窗口系统的一个功能。终端模式(
-nw
)下的Emacs不访问任何窗口系统特定的API。大多数设计用于终端的命令行工具都是如此

您需要按照其他人的建议升级您的Emacs,并以图形方式运行 模式在Mac OS X上使用Emacs 24,您想要的行为是默认行为

如果你想在终端上实现这一点,那么hack将使剪贴板工作

(defun copy-from-osx ()
(shell-command-to-string "pbpaste"))

(defun paste-to-osx (text &optional push)
(let ((process-connection-type nil))
(let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
(process-send-string proc text)
(process-send-eof proc))))

(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx) 
真奇怪

我使用command-V,它每次都能工作

当您关注终端窗口时,通过command-V粘贴的任何内容都将成为发送到终端的单独按键

我使用Mac OS X 10.5(Leopard)和emacs 22.1.1。

请参见

以下是代码:

(require 'simpleclip)
(defun copy-to-clipboard ()
  (interactive)
  (let ((thing (if (region-active-p)
                   (buffer-substring-no-properties (region-beginning) (region-end))
                 (thing-at-point 'symbol))))
    (simpleclip-set-contents thing)
    (message "thing => clipboard!")))

(defun paste-from-clipboard()
  "Paste string clipboard"
  (interactive)
  (insert (simpleclip-get-contents)))
代码使用simpleclip()

Simpleclip要求您在Mac/Linux/Cygwin上安装一些命令行工具。因此,即使没有图形支持的emacs也可以访问剪贴板


此解决方案适用于任何版本的Emacs和任何操作系统。当您的远程ssh启用X forward时,它也可以工作。如果服务器启用X forward,则完整的命令是
ssh-X-C-C blowfish cbc,arcfourname@host.com

操作系统suse 12.2-emacs默认版本24.2-15.8.2(x86_64)通过ctrl-y忽略了从剪贴板粘贴
问题终于解决了,降级到23.3-15.5.1版(x86_64)

我有没有提到我是个初学者?:)所以你必须为一个简单的粘贴做一个键映射吗?我需要在Windows上进行键映射。我不知道Max OSX的情况,但如果
C-y
不适合你,这似乎很简单。是的,不适合。虽然我是初学者,但我惊讶地发现这很难做到。尝试一下yank命令,只做M-x yank。要查看在您的系统上运行此命令的keychord,您可以运行C-h w Yanki。如果此命令仍然不起作用,您可能需要检查cua模式。我今天在我的Ubuntu11.10上使用最新的emacs尝试了此命令,但它不起作用。上面说杀人戒指是空的。我用的是你的第一个命令,太棒了!我在Ubuntu12.04上运行Emacs24.3,并使用XWin服务器通过Windows7连接,这将内容从我的Windows剪贴板拉到了我的emacs会话中。谢谢确认这在Mac上确实有效——使用OS X 10.8.5和Emacs 24.3。我没有用Aquamacs测试这个,它在debian、Emacs24.10上工作。接受的答案在这里不起作用。
clipboard-yank
至少在Emacs-25.0中被破坏-在
select enable clipboard
存在时设置为«nil»不再适用于剪贴板。另一方面,我想这可能是一个错误修复,因为文档清楚地说,这个函数可能也会粘贴最后一个被杀死的文本。但事实上,我现在还没有找到一种方法来禁用剪贴板污染,并且能够使用它的内容。完美的答案。不过有一个简短的评论:如果我升级Emacs,然后在终端中使用-nw来运行它,我能使用系统剪贴板吗?或者,如果我想在终端中工作,而不考虑Emacs版本,我需要使用hack?终端应用程序无法访问系统剪贴板。不过,黑客攻击并不严重,我确实在其他上下文中使用了
pbcopy
。提供的链接似乎有问题。。我访问了一个没有内容的网站。是相同或相似的链接。不,这根本不是我要说的。我在tmux和iTerm中运行Vim。它使用我的系统剪贴板作为
*
寄存器。任何正在运行的可执行文件都可以访问剪贴板,只要作者使用了API。不过,用户似乎已经通过更新Emacs解决了问题。另外,用户使用的不是command-V,而是C-y(这是Emacs中“猛拉”的默认命令)!xsel或
:r!xsel-b
什么读取感叹号后指定的命令的输出。在MacOS上,您可能会使用
pbaste
。这个答案是否仅限于X11,在这种情况下,它不适用于MacOS本机版本的emacs?