Answers:
要将当前区域复制到OS X剪贴板,可以使用
(shell-command-on-region (region-beginning) (region-end) "pbcopy")
相反,不建议将OS X粘贴缓冲区复制到Emacs kill ring。击杀环和剪贴板的结构截然不同,确切地说,将剪贴板推入击杀环应该做什么并没有很好的答案。尽管如此,您仍可以pbpaste
手动运行以获取当前剪贴板内容。
将此添加到~/.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)
这是丹尼尔·尼尔森(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。
以下是可行的,是从这里得到的:)
(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))
OS X随附的emacs版本太旧,无法提供此功能。
幸运的是,您可以在此处将emacs更新为与剪贴板集成的版本:http : //emacsformacosx.com
我相信在更新后,您可以使用Ctrl+ Y粘贴到emacs中。
pbcopy
和pbpaste
都是终端应用程序。任何其他终端应用程序都可以执行其操作,或者直接调用它们。
pbcopy
Emacs剪切和复制功能。可能吗?
我发现这篇文章非常有用(在您的〜/ .emacs文件中定义2个函数并为它们分配快捷方式)。
将这些行添加到.emacs文件后,您将无法访问这些快捷方式,除非您打开新的Shell会话(选项卡/窗口)。让更改应用。
通过启用可从GNU ELPA安装xclip-mode
的xclip
软件包提供的包(即通过M-x package-list-packages RET
),可以在文本终端中运行Emacs时透明地与剪贴板进行这种交互。
另请参阅/emacs/10900/了解类似的问题和解答。
/usr/bin/emacs
的是Apple与OSX捆绑在一起的古老的可执行文件,而该文件只限于文本终端?