Pregunta

Cuando corté (matar) texto en Emacs 22.1.1 (en su propia ventana en X, en el KDE en Kubuntu), yo no puedo pegar (yank) en cualquier otra aplicación.

¿Fue útil?

Solución 2

Introduzca lo siguiente en su .emacs archivo:

(setq x-select-enable-clipboard t)

Otros consejos

Vamos a ser cuidadosos con nuestras definiciones aquí

  • Un Emacs copia es el comando kill-ring-save (generalmente atados a M-w).
  • Un sistema de copia es lo que suele obtener de presión C-c (o escoger "Editar->Copiar" en una ventana de la aplicación).
  • Un X copia es "físicamente" el resaltado de texto con el cursor del ratón.
  • Un Emacs pegar es el comando yank (generalmente atados a C-y).
  • Un sistema de pegar es lo que suele obtener de presión C-v (o escoger "Editar-Pegar" en una ventana de la aplicación).
  • Un X pegar es pulsando el botón de "centro de botón de ratón" (simulado pulsando los botones izquierdo y derecho juntos).

En mi caso (en GNOME):

  • Ambos Emacs y copia del sistema suelen trabajar con X pegar.
  • X copia trabaja generalmente con Emacs pegar.
  • Para hacer la copia del sistema de trabajo con Emacs, pegar y Emacs copia de trabajo con sistema de pegado, usted necesita agregar (setq x-select-enable-clipboard t) a su .emacs.O probar

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

Creo que esto es bastante moderno estándar de Unix comportamiento.

También es importante tener en cuenta (aunque dices que estás usando Emacs en una ventana aparte) que cuando Emacs se está ejecutando en una consola, es completamente divorciado del sistema y X portapapeles:cortar y pegar en ese caso está mediada por el terminal.Por ejemplo, "Editar->Pegar" en tu ventana de terminal debe actuar exactamente como si el que escribió el texto del portapapeles en el buffer de Emacs.

La dificultad con copiar y pegar en Emacs es que lo quieres para trabajar de forma independiente desde el interior matar/yank, y que desea que el trabajo tanto en la terminal y la interfaz gráfica de usuario.Existen soluciones robustas para cualquiera de los terminales o gui, pero no tanto.Después de instalar xsel (por ejemplo, sudo apt-get install xsel), aquí es lo que tengo que hacer para copiar y pegar para combinarlos:

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

Me quedo en mi .emacs:

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

Posteriormente, básicamente, no hay problemas de cortar y pegar de ida y vuelta de cualquier cosa en Emacs para cualquier otro X11 o aplicación de Gnome.

Bono:para conseguir estas cosas sucedan en Emacs sin tener que volver a cargar su conjunto .emacs, ¿ C-x C-e con el cursor justo después del paréntesis de cierre de cada una de esas expresiones en el .buffer de emacs.

Buena suerte!

Supongo que por emacs se están significado de Emacs en X (es decir, no dentro de una ventana de terminal).

Hay dos formas:

  1. (Se aplica a los sistemas operativos de unix sólo) Seleccione el texto deseado con su ratón (esta copia a la X portapapeles) y, a continuación, haga clic en medio a pegue.
  2. Seleccione el texto deseado y, a continuación, "M-x portapapeles-kill-ring-guardar" (tenga en cuenta que puede obligar a este a una más fácil la clave).A continuación, sólo "Editar->Pegar" en su aplicación favorita.

Las operaciones de portapapeles disponibles:

  • portapapeles-kill-ring-guardar-copia selección de Emacs al portapapeles
  • portapapeles-matar-región-corte selección de Emacs al portapapeles
  • portapapeles-yank -- pasta de portapapeles para Emacs

Hay un EmacsWiki artículo que explica algunos problemas con copiar y pegar en X y cómo configurarlo para que funcione.

Esto funciona con M-w en Mac OSX.Sólo tiene que añadir a su .emacs archivo.

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

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

El siguiente código, inspirado por @RussellStewart la respuesta anterior, añade soporte para x-PRIMARIA y x-SECUNDARIA, reemplaza region-active-p con use-region-p para el caso de una región vacía, no regreso en silencio si xsel no se ha instalado (devuelve un mensaje de error), e incluye un "corte" de la función (emacs C-s, C de windows-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, ¿qué plataforma y qué versión de emacs están utilizando?Con GNU Emacs 22.1.1 en Windows Vista, funciona muy bien para mí.

Si, por casualidad, usted está haciendo esto desde windows a linux a través de un visor RealVNC, asegúrese de que está ejecutando "vncconfig -icónico" en el cuadro de linux en primer lugar.....

Yo siempre uso rápido pegar -- arrastre la selección en emacs, pulse el botón central del ratón en la ventana de destino.

(A partir de la referencia a kate, creo que estás en linux o similar, y probablemente el uso de emacs en X de una manera o de otra.)

Es posible que desee especificar en qué plataforma se está utilizando.Es en linux, unix, macosx, windows, ms-dos?

Yo creo que para windows debería funcionar.Para MacOSX serán añadidos a la x-portapapeles de windows, que no es la misma cosa que el macosx portapapeles.Para Linux, depende de su sabor de gestor de ventanas, pero creo que x-windows maneja de una forma agradable en la mayoría de ellos.

Así que, por favor especifique.

Lo que yo hago es utilizar una buena herramienta de terminal (PuTTY en Windows, Consola o Terminal en Linux) que tiene copia de las instalaciones integradas.

En la Masilla, que resalte el texto que desee con el ratón y, a continuación, pegarlo en otro lugar.Haga clic en una ventana de PuTTY pega el contenido del copiar/pegar de Windows búfer.

En la Consola o Terminal en Linux, puede resaltar lo que se desea, a continuación, presione Mayús+Ctrl+C para copiar y Ctrl+Mayús+V para pegar.

En el win32 compilación de emacs, tirando de texto sí lo pone en el copy/paste de búfer ..la mayoría del tiempo.

En Mac OS X, Apple-clave chortcuts trabajo bien, porque la Terminal de trampas de ellos.

No hay una manera directa de hacerlo en la línea de comandos, debido a que la cáscara no mantener un copiar/pegar de amortiguamiento para cada aplicación.bash ¿ mantener un copiar/pegar de búfer para sí mismo, y, por defecto, emacs ^k/^y con los accesos directos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top