Question

Lorsque je coupe du texte dans Emacs 22.1.1 (dans sa propre fenêtre sous X, sous KDE, sous Kubuntu), je ne peux pas le coller dans aucune autre application.

Était-ce utile?

La solution 2

Insérez les éléments suivants dans votre fichier .emacs :

(setq x-select-enable-clipboard t)

Autres conseils

Faisons attention à nos définitions ici

  • Une copie Emacs est la commande kill-ring-save (généralement liée à M-w ).
  • Une copie système correspond généralement à ce que vous obtenez en appuyant sur C-c (ou en choisissant "Édition- > Copier" dans une fenêtre d'application).
  • Une copie X est "physiquement". surligner du texte avec le curseur de la souris.
  • Une pâte Emacs est la commande yank (généralement liée à C-y ).
  • Un système coller correspond généralement à ce que vous obtenez en appuyant sur C-v (ou en choisissant "Édition / Collage" dans une fenêtre d'application).
  • Un X paste appuie sur le bouton central de la souris " (simulé en appuyant simultanément sur les boutons gauche et droit de la souris).

Dans mon cas (sous GNOME):

  • Emacs et la copie système fonctionnent généralement avec X coller.
  • X copy fonctionne généralement avec Emacs paste.
  • Pour que la copie système fonctionne avec Emacs paste et la copie Emacs avec coller système, vous devez ajouter (setq x-select-enable-clipboard t) à votre . emacs . Ou essayez

    META-X set-variable RET x-select-enable-clipboard RET t
    

Je pense que c'est un comportement assez standard d'Unix moderne.

Il est également important de noter (même si vous dites que vous utilisez Emacs dans une fenêtre séparée), lorsque Emacs s'exécute dans une console, il est complètement dissocié du système et des presse-papiers X: couper et coller sont alors négociés. par le terminal. Par exemple, "Éditer- > Coller". dans la fenêtre de votre terminal devrait agir exactement comme si vous tapiez le texte du presse-papier dans le tampon Emacs.

Le problème avec copier-coller dans Emacs est que vous voulez que cela fonctionne indépendamment du kill / yank interne, et que vous voulez que cela fonctionne à la fois dans le terminal et dans l'interface graphique. Il existe des solutions robustes pour les terminaux ou les interfaces graphiques, mais pas les deux. Après avoir installé xsel (par exemple, sudo apt-get install xsel ), voici ce que je fais pour copier et coller afin de les combiner:

(defun copy-to-clipboard ()
  (interactive)
  (if (display-graphic-p)
      (progn
        (message "Yanked region to x-clipboard!")
        (call-interactively 'clipboard-kill-ring-save)
        )
    (if (region-active-p)
        (progn
          (shell-command-on-region (region-beginning) (region-end) "xsel -i -b")
          (message "Yanked region to clipboard!")
          (deactivate-mark))
      (message "No region active; can't yank to clipboard!")))
  )

(defun paste-from-clipboard ()
  (interactive)
  (if (display-graphic-p)
      (progn
        (clipboard-yank)
        (message "graphics active")
        )
    (insert (shell-command-to-string "xsel -o -b"))
    )
  )

(global-set-key [f8] 'copy-to-clipboard)
(global-set-key [f9] 'paste-from-clipboard)

Je colle ceci dans mes .emacs:

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

Par la suite, je n'ai pratiquement aucun problème à couper et à coller tout ce qui se trouve dans Emacs vers une autre application X11 ou Gnome.

Bonus: pour que cela se produise dans Emacs sans avoir à recharger l'intégralité de vos fichiers .emac, utilisez C-x C-e avec le curseur juste après la clôture de chacune de ces expressions dans le tampon .emacs.

Bonne chance!

Je suppose qu'emacs signifie "Emacs" sous X (c'est-à-dire pas dans une fenêtre de terminal).

Il y a deux façons:

  1. (S'applique uniquement aux systèmes d'exploitation Unix) Mettez en surbrillance le texte souhaité avec votre mouse (ceci le copie au X presse-papiers), puis cliquez au milieu pour coller.
  2. Mettez en surbrillance le texte souhaité, puis choisissez "M-x presse-papiers-kill-ring-save". (notez que vous pouvez lier ceci à un clé). Ensuite, cliquez sur "Modifier" et "Coller". dans votre application préférée.

Opérations du Presse-papiers disponibles:

  • clipboard-kill-ring-save - copier sélection d'Emacs au presse-papiers
  • clipboard-kill-region - couper sélection d'Emacs au presse-papiers
  • clipboard-yank - coller de presse-papiers vers Emacs

Il existe un article d'EmacsWiki qui explique certains problèmes liés à copy & amp; coller sous X et comment le configurer pour qu'il fonctionne.

Ceci fonctionne avec M-w sur Mac OSX. Ajoutez simplement à votre fichier .emacs .

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

Source https://gist.github.com/the-kenny/267162

Le code ci-dessous, inspiré de la réponse de @ RussellStewart ci-dessus, ajoute la prise en charge de x-PRIMARY et x-SECONDARY, remplace region-active-p par use-region-p pour couvrir le cas d'une région vide, ne retourne pas en mode silencieux si xsel n'a pas été installé (renvoie un message d'erreur), et inclut un "couper". fonction (emacs C-y, fenêtres C-x).

(defun my-copy-to-xclipboard(arg)
  (interactive "P")
  (cond
    ((not (use-region-p))
      (message "Nothing to yank to X-clipboard"))
    ((and (not (display-graphic-p))
         (/= 0 (shell-command-on-region
                 (region-beginning) (region-end) "xsel -i -b")))
      (error "Is program `xsel' installed?"))
    (t
      (when (display-graphic-p)
        (call-interactively 'clipboard-kill-ring-save))
      (message "Yanked region to X-clipboard")
      (when arg
        (kill-region  (region-beginning) (region-end)))
      (deactivate-mark))))

(defun my-cut-to-xclipboard()
  (interactive)
  (my-copy-to-xclipboard t))

(defun my-paste-from-xclipboard()
  "Uses shell command `xsel -o' to paste from x-clipboard. With
one prefix arg, pastes from X-PRIMARY, and with two prefix args,
pastes from X-SECONDARY."
  (interactive)
  (if (display-graphic-p)
    (clipboard-yank)
   (let*
     ((opt (prefix-numeric-value current-prefix-arg))
      (opt (cond
       ((=  1 opt) "b")
       ((=  4 opt) "p")
       ((= 16 opt) "s"))))
    (insert (shell-command-to-string (concat "xsel -o -" opt))))))

(global-set-key (kbd "C-c C-w") 'my-cut-to-xclipboard)
(global-set-key (kbd "C-c M-w") 'my-copy-to-xclipboard)
(global-set-key (kbd "C-c C-y") 'my-paste-from-xclipboard)

Hmm, quelle plate-forme et quelle version d’Emacs utilisez-vous? Avec GNU Emacs 22.1.1 sur Windows Vista, cela fonctionne très bien pour moi.

Si, par hasard, vous effectuez cette opération de Windows à Linux via un visualiseur RealVNC, assurez-vous que vous exécutez " vncconfig -iconic " sur la boîte de linux en premier .....

J'utilise toujours le collage rapide - faites glisser la sélection dans emacs, cliquez sur le bouton central de la souris dans la fenêtre cible.

(De la référence à kate, je suppose que vous êtes sur linux ou similaire et que vous utilisez probablement emacs dans X d’une manière ou d’une autre.)

Vous pouvez spécifier la plate-forme que vous utilisez. Est-ce sur linux, unix, macosx, windows, ms-dos?

Je pense que pour Windows cela devrait fonctionner. Pour MacOSX, il sera ajouté au presse-papiers de x-windows, ce qui n'est pas la même chose que le presse-papiers de macosx. Pour Linux, cela dépend de votre style de gestionnaire de fenêtres, mais je pense que x-windows le gère de manière agréable pour la plupart d'entre eux.

Alors, veuillez spécifier.

Ce que je fais est d’utiliser un bon outil terminal (PuTTY sous Windows, Konsole ou Terminal sous Linux) doté de fonctions de copie intégrées.

Dans PuTTY, mettez en surbrillance le texte souhaité avec la souris, puis collez-le ailleurs. En cliquant avec le bouton droit de la souris dans une fenêtre PuTTY, vous collez le contenu du tampon de copie / collage Windows.

Sous Konsole ou Terminal sous Linux, vous mettez en surbrillance ce que vous souhaitez, puis appuyez sur les touches Maj + Ctrl + C pour les copier et Maj + Ctrl + V pour les coller.

Dans la compilation win32 d’emacs, le texte collé est placé dans le tampon copier / coller. La plupart du temps.

Sous Mac OS X, les chortcuts Apple-key fonctionnent correctement car Terminal les intercepte.

Il n’existe aucun moyen direct de le faire sur la ligne de commande car le shell ne conserve pas de tampon copier / coller pour chaque application. bash conserve un tampon copier / coller pour lui-même et, par défaut, les raccourcis emacs ^ k / ^ y fonctionnent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top