配置emacs剪切文本并将其复制到Mac OS X剪贴板


16

是否可以配置emacs,以便我可以从emacs(默认的终端版本)复制/剪切文本并将其粘贴到其他地方(到X Window程序中)?


Nitpick:您说的是“默认终端版本”,但是Emacs 的默认功能模式是使用GUI而不是文本终端。也许您指/usr/bin/emacs的是Apple与OSX捆绑在一起的古老的可执行文件,而该文件只限于文本终端?
Stefan

Answers:


4

要将当前区域复制到OS X剪贴板,可以使用

(shell-command-on-region (region-beginning) (region-end) "pbcopy")

相反,不建议将OS X粘贴缓冲区复制到Emacs kill ring。击杀环和剪贴板的结构截然不同,确切地说,将剪贴板推入击杀环应该做什么并没有很好的答案。尽管如此,您仍可以pbpaste手动运行以获取当前剪贴板内容。


这对我不起作用。但是,此Emacs帖子中标记的解决方案确实可以工作。
GalderZamarreño2015年

8

将此添加到~/.emacs

(defun pbcopy ()
  (interactive)
  (call-process-region (point) (mark) "pbcopy")
  (setq deactivate-mark t))

(defun pbpaste ()
  (interactive)
  (call-process-region (point) (if mark-active (mark) (point)) "pbpaste" t t))

(defun pbcut ()
  (interactive)
  (pbcopy)
  (delete-region (region-beginning) (region-end)))

(global-set-key (kbd "C-c c") 'pbcopy)
(global-set-key (kbd "C-c v") 'pbpaste)
(global-set-key (kbd "C-c x") 'pbcut)

如果在iTerm 2中使用Emacs,则还可以在首选项中重新映射按键组合:

然后将以下内容添加到~/.emacs

(global-set-key (kbd "<f13> c") 'pbcopy)
(global-set-key (kbd "<f13> v") 'pbpaste)
(global-set-key (kbd "<f13> x") 'pbcut)

仍然是最佳答案。谢谢!对于iterm的注释,要创建这些“动作”,请选择“发送转义代码”,然后省略开头的“ ^ [”。(不适用于“发送文本”操作类型)
Jay

3

这是丹尼尔·尼尔森(Daniel Nelson)将OS X剪贴板集成到Emacs杀手的解决方案:https : //github.com/wesen/emacs/blob/master/pbcopy.el

作者评论:

从Mac OSX终端运行Emacs时,使杀手环与剪贴板进行交互(而不会丢失所有杀手环功能)。我所做的只是修改xclip.el以与pbcopy和一起使用pbpaste。衷心感谢xclip.el的作者Leo Shidai Liu。


1

以下是可行的,是从这里得到的:)

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

您可以添加指向原始帖子的链接吗?
文森特

0

OS X随附的emacs版本太旧,无法提供此功能。

幸运的是,您可以在此处将emacs更新为与剪贴板集成的版本:http : //emacsformacosx.com

我相信在更新后,您可以使用Ctrl+ Y粘贴到emacs中。


啊-我忘了说-您将从该站点下载的emacs版本是图形的(即,它不在终端中运行)。终端中的应用程序不可能在没有黑客的情况下访问剪贴板,而我现在再也找不到了。:/
Faiz Saleem

2
pbcopy并且pbpaste仍然存在,并且不是黑客。

这是可能的,但是我假设OP希望使用键盘命令进行复制和粘贴。我的意思是说终端应用程序不能使用键盘快捷键来复制和粘贴OS X剪贴板,而不会受到黑客的攻击。
Faiz Saleem

“终端应用程序不能使用键盘快捷键来复制和粘贴OS X剪贴板,而不会受到黑客的攻击。” 这显然是不正确的,因为pbcopypbpaste都是终端应用程序。任何其他终端应用程序都可以执行其操作,或者直接调用它们。

我一直在寻找pbcopyEmacs剪切和复制功能。可能吗?
宪法

0

我发现这篇文章非常有用(在您的〜/ .emacs文件中定义2个函数并为它们分配快捷方式)。

将这些行添加到.emacs文件后,您将无法访问这些快捷方式,除非您打开新的Shell会话(选项卡/窗口)。让更改应用。


0

通过启用可从GNU ELPA安装xclip-modexclip软件包提供的包(即通过M-x package-list-packages RET),可以在文本终端中运行Emacs时透明地与剪贴板进行这种交互。

另请参阅/emacs/10900/了解类似的问题和解答。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.