27 votes

Intégrer le copier / coller d'Emacs avec le copier / coller du système

J'ai (cua-mode t) dans mon .emacs, de sorte que C-c est de copier et C-v est de coller le tout comme la plupart des autres programmes sur mon pc (Ubuntu, Gnome, Linux). Cependant, Emacs ne semble pas partager le presse-papiers/tampon de copie avec d'autres programmes.

Par exemple, si je C-c dans Firefox, je peux S-C-v pour coller dans un terminal ou d'un C-v pour coller dans gedit. Cependant, si je C-v (C-o) dans emacs, je ne reçois pas ce que j'ai copié à partir de Firefox.

Est-il possible de faire ce travail? Est-il une autre commande que je peux utiliser pour accéder au système de copier-coller le tampon?

25voto

Nathan Geffen Points 204

J'ai eu le même problème. J'ai ajouté ceci à mon fichier .emacs:

 (setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
 

Maintenant, Ctrl-C et Ctrl-v entre Emacs et d'autres applications fonctionnent correctement. Source: Forums Ubuntu

14voto

jamessan Points 16420

Voir clipboard-yank et clipboard-kill-region dans la section presse - papiers du manuel.

5voto

mcandre Points 6965

Cela fonctionne sur ma machine:

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

4voto

danlei Points 8602

Peut-être que cette page EmacsWiki vous aidera, en particulier la section où clipboard-kill-region , clipboard-kill-ring-save et clipboard-yank sont mentionnés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X