将Emacs复制/粘贴与系统复制/粘贴集成

sli*_*cki 32 linux emacs gnome copy-paste

我的.emacs中有(cua-mode t),所以Cc是副本,Cv就像我桌面上的大多数其他程序一样粘贴(Ubuntu,Gnome,Linux).但是,Emacs似乎与其他程序共享剪贴板/复制缓冲区.

例如,如果我在Firefox中使用Cc,我可以将SCv粘贴到终端或将Cv粘贴到gedit中.但是,如果我在emacs中使用Cv(或Cy),我不会得到我从Firefox复制的内容.

有没有办法让这项工作?是否有另一个命令可用于访问系统的复制粘贴缓冲区?

小智 27

我有同样的问题.我把它添加到我的.emacs文件中:

(setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
Run Code Online (Sandbox Code Playgroud)

现在,Emacs和其他应用程序之间的Ctrl-C和Ctrl-v工作正常.资料来源:Ubuntu论坛


jam*_*san 15

clipboard-yankclipboard-kill-region剪贴板手册的部分.


mca*_*dre 12

这适用于我的机器:

;; 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))))
Run Code Online (Sandbox Code Playgroud)