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

时间:2012-04-02 23:42:55

标签: emacs osx-lion paste emacs22

这可能非常简单,但我正在使用Emacs(22.1.1)并且我无法使用 Control - Y 。

7 个答案:

答案 0 :(得分:40)

尝试使用M-x clipboard-yank命令。如果要将文本复制到剪贴板,则必须M-x clipboard-kill-region

这适用于Linux和Windows,我猜在Mac上也是如此。

答案 1 :(得分:25)

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

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

如果您想在终端中执行此操作,则this 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) 

答案 2 :(得分:18)

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

答案 3 :(得分:1)

请参阅http://blog.binchen.org/?p=589

这是代码:

(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(https://github.com/rolandwalker/simpleclip

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

此解决方案适用于任何版本的Emacs,任何操作系统。如果服务器启用X转发,则远程ssh也可以使用它,完整命令为ssh -X -C -c blowfish-cbc,arcfour name@host.com

答案 4 :(得分:0)

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

(defun h-insert-x-selection () (interactive)
  (insert (x-selection 'CLIPBOARD))) 
(global-set-key [(meta insert)] 'h-insert-x-selection)

XEmacs上,它有所不同,我有

(global-set-key  [(shift insert)] 'x-insert-selection)

答案 5 :(得分:0)

这很奇怪。

我使用命令-V,它每次都有效。

当您专注于终端窗口时,通过命令-V粘贴的任何内容都会成为发送到终端的单独按键。

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

答案 6 :(得分:0)

OS suse 12.2 - emacs默认版本24.2-15.8.2(x86_64)只是忽略了ctrl-y从剪贴板粘贴 最后问题通过降级到版本23.3-15.5.1(x86_64)

解决