Cuando corté (elimino) texto en Emacs 22.1.1 (en su propia ventana en X, en KDE, en Kubuntu), no puedo pegarlo (arrastrarlo) en cualquier otra aplicación.Cómo copiar texto de Emacs a otra aplicación en Linux
Respuesta
Inserte el siguiente en su archivo .emacs
:
(setq x-select-enable-clipboard t)
Hmm, ¿qué plataforma y qué versión de emacs estás usando? Con GNU Emacs 22.1.1 en Windows Vista, funciona bien para mí.
Si, por casualidad, usted está haciendo esto de Windows a Linux a través de un visor RealVNC, asegúrese de que está ejecutando "vncconfig -iconic" en la máquina Linux primero .....
Lo que hago es utilizar una buena herramienta de terminal (PuTTY en Windows, Konsole o Terminal en Linux) que tenga incorporadas las funciones de copia.
En PuTTY, resalta el texto que desea con el mouse y luego lo pega en otro lugar. Al hacer clic con el botón derecho en una ventana de PuTTY, se pega el contenido del búfer de copiar/pegar de Windows.
En Konsole o Terminal en Linux, resalte lo que desea y luego presione Mayús + Ctrl + C para copiar y Mayús + Ctrl + V para pegar.
En la compilación win32 de emacs, el texto de extracción lo pone en el búfer de copiar/pegar ... la mayoría de las veces.
En Mac OS X, los chortcuts Apple-key funcionan bien, porque el terminal los atrapa.
No hay forma directa de hacerlo en la línea de comandos porque el shell no mantiene un búfer de copiar/pegar para cada aplicación. bash does mantiene un buffer de copiar/pegar por sí mismo, y, de forma predeterminada, funcionan los atajos de^^/^ y emacs.
Siempre utilizo la función de pegar rápido y arrastrar en emacs, pulso el botón central del mouse en la ventana de destino.
(De la referencia a Kate, lo tomo estás en Linux o similar y probablemente usando emacs en X de una manera u otra.)
Es posible que desee especificar qué plataforma que está utilizando. ¿Está en linux, unix, macosx, windows, ms-dos?
Creo que para Windows debería funcionar. Para MacOSX se agregará al portapapeles de x-windows, que no es lo mismo que el portapapeles macosx. Para Linux, depende de tu gusto de administrador de ventanas, pero creo que x-windows lo maneja de una manera agradable en la mayoría de ellos.
Por lo tanto, por favor especifique.
Hay an EmacsWiki article que explica algunos problemas con la copia & pegando en X y cómo configurar para que funcione.
Supongo que por emacs significa Emacs en X (es decir, no dentro de una ventana de terminal).
Hay dos maneras:
- (Se aplica al sistema operativo UNIX sólo de) resaltar el texto que desee con su ratón (esta copia en el X portapapeles) y haga clic a continuación media a pasta.
- Resalte el texto deseado y luego "M-x clipboard-kill-ring-save" (tenga en cuenta que puede enlazar esto a una clave más fácil).Luego simplemente "Editar-> Pegar" en su aplicación favorita.
operaciones de portapapeles disponibles:
- portapapeles-kill-ring-save - copiar selección de Emacs al portapapeles
- portapapeles-kill-region - cortar selección de Emacs al portapapeles
- portapapeles-yanqui - pegar desde el portapapeles a Emacs
Vamos a tener cuidado con nuestras definiciones aquí
- Un Emacs copia es el comando
kill-ring-save
(por lo general con destino a M-w). - A copia del sistema es lo que normalmente se obtiene presionando C-c (o seleccionando "Editar-> Copiar" en una ventana de la aplicación).
- Una copia X copia resalta texto "físicamente" con el cursor del mouse.
- Un Emacs pegar es el comando
yank
(generalmente unido a C-y). - Una pasta sistema es lo que normalmente se obtiene de presión C-v (o "Edición-Pegar" en una ventana de la aplicación).
- Un X pegar está presionando el "botón central del mouse" (simulado presionando los botones izquierdo y derecho del mouse juntos).
En mi caso (en GNOME):
- Tanto Emacs y copia del sistema suelen trabajar con pasta de X.
- Copia X generalmente funciona con pegar Emacs.
Para hacer que la copia del sistema funcione con Emacs paste y la copia de Emacs funcione con el sistema pegado, debe agregar
(setq x-select-enable-clipboard t)
a su.emacs
. O intentoMETA-X set-variable RET x-select-enable-clipboard RET t
creo que esto es moderna comportamiento bastante estándar de Unix.
También es importante tener en cuenta (aunque diga que está usando Emacs en una ventana separada) que cuando Emacs se ejecuta en una consola, está completamente divorciado del sistema y X portapapeles: cortar y pegar en ese caso es mediado por la terminal. Por ejemplo, "Editar-> Pegar" en la ventana de su terminal debe actuar exactamente como si hubiera tecleado el texto del portapapeles en el búfer de Emacs.
[Esta es una terminología confusa] (http://unix.stackexchange.com/questions/158082/what-are-system-copy-and-paste). El nombre estándar y menos confuso para lo que usted llama "Copiar/pegar X" es la selección primaria X. Lo que usted llama "copiar/pegar del sistema" es el portapapeles X. – Gilles
que pegar esto en mis .emacs:
(setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
posteriormente Tengo básicamente, no hay problemas de cortar y pegar un lado a otro de cualquier cosa en Emacs a cualquier otra aplicación X11 o Gnome.
Bonificación: para hacer que sucedan estas cosas en Emacs sin tener que volver a cargar todos sus archivos .emacs, ejecute C-x C-e con el cursor justo después del par de cada una de esas expresiones en el búfer de .emacs.
¡Buena suerte!
Esta solución funciona para emacs en una ventana X emacs es decir, se ejecuta dentro de una ventana si está ejecutando emacs en la línea de comandos lo que necesita es: http://stackoverflow.com/questions/5288213/how-can-i -paste-la-región-seleccionada-fuera-de-emacs – elviejo79
La dificultad de copiar y pegar en Emacs es que se quiere que funcione independientemente del eliminados/tirón interno, y que desea que funcione tanto en terminal y la interfaz gráfica de usuario. Existen soluciones sólidas existentes para terminal o GUI, pero no para ambas. Después de instalar XSEL (por ejemplo sudo apt-get install xsel
), esto es lo que hago 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)
Porque recibo un error porque no hay params. Necesito cambiar la primera línea "(defun copy-to-clipboard()" to "(defun copy-from-ubuntu (texto y push opcional)". Esto funciona para mí: D –
Esto funciona con M-w
en Mac OSX. Solo agregue a su archivo .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)
El código siguiente, inspirado por la respuesta de @ RussellStewart anterior, añade soporte para x-PRIMARIO y x-SECUNDARIA, reemplaza region-active-p
con use-region-p
para cubrir el caso de una región vacía, no lo hace devuelva silenciosamente si xsel no se ha instalado (devuelve un mensaje de error), e incluye una función de "corte" (emacs Cy, Windows Cx).
(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)
¿Hay alguna razón para no sobrescribir el estándar? ?. combinaciones de teclas – Paul
@ Pablo: las 'combinaciones de teclas estándar' son para el 'emacs portapapeles interno', que es diferente de los X-portapapeles me citó el término 'emacs portapapeles interno' porque la terminología emacs es diferente - se refiere a Chris de excelente Conway explicación, arriba. – user1404316
- 1. No se puede copiar el texto en Emacs y pegar en otra aplicación
- 2. Emacs: copiar texto (sin eliminarlo)
- 3. ¿Copiar una clase a otra?
- 4. ¿Cómo copiar un archivo a otra ruta?
- 5. ¿Cómo pegar texto de una aplicación a otra usando Cocoa?
- 6. Insertar texto en el cuadro de texto de otra aplicación
- 7. Copiar datos de Oracle a otra tabla
- 8. Cómo copiar al portapapeles en Emacs Lisp
- 9. ¿Es posible enviar texto de otra aplicación al búfer actual de Emacs?
- 10. Cómo copiar texto en gitk
- 11. Cómo copiar a otra aplicación y hacer que aparezca en formato delphi
- 12. Conversión de voz a texto en Linux
- 13. ¿Cómo copiar los datos IPTC de una imagen a otra?
- 14. ¿Cómo copiar los commits de una rama a otra?
- 15. sql: cómo copiar de una tabla a otra tabla
- 16. ¿Cómo copiar datos binarios de una secuencia a otra?
- 17. Cómo copiar elementos de una DropDownList a otra
- 18. Cómo copiar una matriz de enteros a otra
- 19. Cómo copiar un archivo de una carpeta a otra carpeta
- 20. Cómo copiar valores de un puntero a otra
- 21. Copiar elementos de colección a otra colección en .NET
- 22. Cómo dibujar gráficos/texto encima de otra aplicación
- 23. Vinculaciones de teclado de Emacs en MATLAB: ¿Copiar/Pegar?
- 24. de almacén de datos de App Engine de administración: Copiar a otra aplicación Característica
- 25. Elimine caracteres no alfa con Jquery al copiar texto de una entrada a otra
- 26. ¿Cómo copiar la base de datos en uso a otra base de datos en django?
- 27. Cómo copiar el valor de la columna de texto de una fila a otra fila en mySQL
- 28. comando bash para copiar archivos de una computadora a otra
- 29. copiar una columna de una tabla a otra
- 30. Linux cómo copiar pero no sobreescribir?
No es vergonzoso, le dice lo que necesita saber. Excelente respuesta – JasonFruit
Funciona perfectamente, uso Ubuntu 12.04. Gracias – zhihong
Agradable y simple, pero esto no funciona en la terminal. No hay ninguna razón por la cual el mismo atajo no debería funcionar tanto en la terminal como en una ventana libre, y algunas de las respuestas a continuación abordan ambas simultáneamente. – RussellStewart