当我在文本终端而不是普通的GUI模式下运行Emacs时,可以通过使用激活区域的开头在Emacs中进行复制C-SPC
,然后选择所需的内容,然后执行操作M-w
。
是否有任何方法可以通过OSX剪贴板中的粘贴方式复制粘贴到网页中的区域(显然不是通过在其GUI模式下运行Emacs)?
我对创建其他快捷方式并不感兴趣,理想情况下,它不需要安装任何模块。
我看过这篇文章并尝试了接受的答案,但是它似乎无法按照我上面期望的方式工作。
还有其他想法吗?
当我在文本终端而不是普通的GUI模式下运行Emacs时,可以通过使用激活区域的开头在Emacs中进行复制C-SPC
,然后选择所需的内容,然后执行操作M-w
。
是否有任何方法可以通过OSX剪贴板中的粘贴方式复制粘贴到网页中的区域(显然不是通过在其GUI模式下运行Emacs)?
我对创建其他快捷方式并不感兴趣,理想情况下,它不需要安装任何模块。
我看过这篇文章并尝试了接受的答案,但是它似乎无法按照我上面期望的方式工作。
还有其他想法吗?
Answers:
从Emacs 复制到OS X剪贴板:
然后选择地区 M-| pbcopy RET
粘贴从OS X剪贴板Emacs的:
C-u M-| pbpaste RET
(如果存在则替换当前区域)
说明:
M-|
运行shell-command-on-region
,顾名思义,它将当前区域通过管道传递给Shell命令。C-u M-|
做同样的事情,但是用stdout
正在运行的命令替换当前区域。
pbcopy
并且pbpaste
是OS X实用程序访问系统剪贴板。
以下是可行的,从这里复制
(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)
xclip-mode
遇到相同的问题?
如果您以“常规方式”使用Emacs(即作为GUI应用程序),则默认情况下它应该已经这样做。如果您在终端仿真器中使用Emacs,则默认情况下它确实不知道如何执行此操作,但是您可以xclip
从GNU ELPA 安装该软件包,然后启用,该功能xclip-mode
可以教Emacs如何针对GNU / Linux和Linux OSX。
xclip
有OSX的工作?从我所看到的地方来看,它似乎旨在与X11配合使用,请参见发布
xclip.el
软件包已扩展使用pbpaste
。
M-x report-emacs-bug
?
正如Stefan所说,图形化Emacs应用程序默认情况下应该这样做。
在文本终端中,另一种选择是使用如下功能:
(defun pbcopy ()
(interactive)
(let ((deactivate-mark t))
(call-process-region (point) (mark) "pbcopy")))
(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)))
这是一个简单的elisp函数,您可以将其放入.emacs文件,该文件将您所在缓冲区的内容复制到剪贴板。您无需选择任何内容,它会复制所有内容。该代码简短,不言自明。
(defun xclip ()
(interactive)
(shell-command (concat "cat " (buffer-file-name (window-buffer (minibuffer-selected-window))) " | pbcopy")))
签出clipboard-kill-region
并clipboard-yank
。这些来自menu-bar.el
。
突出显示区域后,您可以使用剪贴板-kill-区域将区域杀死到粘贴缓冲区和系统剪贴板中。Clipboard-yank“粘贴”当前系统剪贴板上的任何内容。
GalderZamarreño的答案很好,但是它打破了put
以邪恶模式出现的类似邪恶的行为。因此,我在下面对其进行了一些调整-我相信它可能会更好,但是它可以为我完成工作。随时提出改进建议:
(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))))
---->新代码
(defun clipboard-on ()
(interactive)
(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx))
(defun clipboard-off ()
(interactive)
(setq interprogram-cut-function 'gui-select-text)
(setq interprogram-paste-function 'gui-selection-value))
(global-set-key (kbd "C-c C-p") 'clipboard-on)
(global-set-key (kbd "C-c C-y") 'clipboard-off))