我在我的.emacs中有(cua-mode t),所以Cc就是复制,Cv就像我桌面上的其他程序(Ubuntu,Gnome,Linux)一样粘贴。 但是,Emacs似乎没有与其他程序共享剪贴板/复制缓冲区。
例如,如果我在火狐浏览器中,我可以将SCv粘贴到terminal或Cv中粘贴到gedit中。 但是,如果我在emacs中的Cv(或Cy),我不明白我从Firefox复制的东西。
有什么办法可以做这个工作吗? 是否有另一个命令我可以用来访问系统的复制粘贴缓冲区?
这在我的机器上工作:
;; CUA OS copypasta even in ncurses mode (case system-type ('darwin (unless window-system (setq interprogram-cut-function (lambda (text &optional push) (let* ((process-connection-type nil) (pbproxy (start-process "pbcopy" "pbcopy" "/usr/bin/pbcopy"))) (process-send-string pbproxy text) (process-send-eof pbproxy)))))) ('gnu/linux (progn (setq x-select-enable-clipboard t) (defun xsel-cut-function (text &optional push) (with-temp-buffer (insert text) (call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input"))) (defun xsel-paste-function() (let ((xsel-output (shell-command-to-string "xsel --clipboard --output"))) (unless (string= (car kill-ring) xsel-output) xsel-output ))) (setq interprogram-cut-function 'xsel-cut-function) (setq interprogram-paste-function 'xsel-paste-function))))
我有同样的问题。 我把这个添加到我的.emacs文件中:
(setq x-select-enable-clipboard t) (setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
现在,Emacs和其他应用程序之间的Ctrl-C和Ctrl-V正常工作。 来源: Ubuntu论坛
请参阅手册剪贴板部分中的clipboard-kill-region
clipboard-yank
和clipboard-kill-region
。
也许这个EmacsWiki页面将有所帮助,尤其是在提到 clipboard-kill-region
, clipboard-kill-ring-save
和clipboard-yank
阴谋的部分。
我用autocutsel
解决了这个问题, autocutsel
与emacs
以及我的Ubuntu系统的其他部分一起工作。
autocutsel - keep the X clipboard and the cutbuffer in sync
我使用以下命令(运行一次,通常由窗口管理器的“启动”机制或~/.xsession
调用):
autocutsel -fork autocutsel -fork -selection PRIMARY
autocutsel
的第一个实例执行以下操作:
autocutsel跟踪[X11]服务器的缓冲区和剪贴板选择中的更改。 当剪贴板被改变时,它更新剪贴板。 当缓冲区被改变时,它拥有剪贴板选择。 cutbuffer和剪贴板选择总是同步的。
但是通常会有第三个剪贴板,称为PRIMARY
,它使用autocutsel
的第二个实例与其他两个剪贴板同步。
这样做的好处是三个主剪贴板是统一的,所以通过中键或CUA风格的复制/粘贴(CTRL-C和CTRL-V)来粘贴当前选择。
这种方法的主要缺点是任何文本的自动突出显示(例如双击突出显示emacs中的单词,或单击StackOverflow编辑字段中的BlockQuote图标)将立即删除您的复制缓冲区。 为了解决这个问题,我使用了一个剪贴板历史记录器,例如glipper
,它也方便地记录所有的剪贴板内容,并允许我在这种情况下找回丢失的剪贴板内容。 它可以采取一些习惯,并为我工作得很好。 或者,您可以尝试使用-pause
选项,该选项在进行选择之前等待一段时间,这可能足够长以取消选择或删除任何自动选择的文本。 尽管如此,我还是无法获得足够好的结果。
请注意,此解决方案不需要任何特殊的emacs
配置,我使用cua模式启用。