¿Cómo copio el texto de la "pantalla" del programa en mi portapapeles?

13

Quiero copiar texto de la pantalla a mi portapapeles. Sé cómo ingresar al modo copiar y pegar en la pantalla, pero quiero que ese texto vaya a mi portapapeles para poder pegarlo en el navegador, por ejemplo.

¿Cómo hago esto? ¡Gracias!

Ramon Tayag
fuente

Respuestas:

8

En la mayoría de los programas, debe seleccionar texto y presionar Ctrl+ Cpara copiarlo. Pegar texto se haría presionando Ctrl+ V. En el programa emulador de terminal, Ctrl+ Ctiene un significado especial, interrumpe (detiene) los programas por defecto.

Su programa emulador de terminal puede tener otros accesos directos definidos. Por ejemplo, Konsole y Gnome Terminal usan Ctrl+ Shift+ Cpara copiar el texto seleccionado. Alternativamente, seleccione el texto y cópielo utilizando la opción Copiar en el menú Edición o el menú contextual.

Si la salida de su programa es grande, es posible que desee habilitar el búfer de desplazamiento de screen. Eso se puede hacer agregando la siguiente línea al ~/.screenrcarchivo:

termcapinfo xterm ti@:te@
Lekensteyn
fuente
2
Esto no funcionará si el texto que está tratando de copiar de GNU Screen excede el estado real de la pantalla
Marco Ceppi
Por lo general, me desplazo hacia atrás (o simplemente sigo desplazándome mientras selecciono).
Lekensteyn
¿Quieres decir mientras estás en modo Copia en pantalla?
Marco Ceppi
3
No, al seleccionar texto en modo normal con el mouse. Para que eso funcione, debe colocar termcapinfo xterm ti@:te@su archivo ~ / .screenrc para permitir el desplazamiento hacia atrás. Si no tiene .screenrc, obtenga mi screenrc de lekensteyn.nl/files/screenrc
Lekensteyn
Ah, eso es todo, gracias por la aclaración. Es posible que desee agregar eso a su respuesta.
Marco Ceppi
10

Para una implementación cruda y sucia, instale el paquete xsel, que permite la interacción de la línea de comandos con el portapapeles X, luego coloque estas líneas en su~/.screenrc

bind > eval writebuf "exec sh -c 'xsel -nbi </tmp/screen-exchange'"
bind y eval "exec sh -c 'xsel -bo >/tmp/screen-exchange'"

luego reiniciar screen.

Ahora, cuando selecciona algo en el modo de screencopia / desplazamiento hacia atrás y escribe pegar el búfer en un archivo con C- a >, puede moverse al navegador y pegar el contenido del portapapeles como de costumbre (por ejemplo con Ctrl- V).

Para el reverso, copie algo en su navegador con Ctrl- C, luego vaya screeny lea el portapapeles con el nuevo comando C- a y, luego lea el archivo de intercambio de pantalla en el búfer de pegar con C- a <, finalmente pegue donde quiera con C- a ].

Para que esto funcione, la variable DISPLAYdebe estar configurada correctamente y debe tener acceso al servidor X. Esto no es un problema cuando se encuentra en una terminal que se ejecuta en el mismo servidor X, pero si se ejecuta screenen una terminal virtual, por ejemplo, tty1, es posible que deba ejecutar xhost +en el lado X, export DISPLAY=:0o similar en la terminal, antes de comenzar screen.

Como puede ver, no es simple y no es a prueba de balas, pero espero que pueda ayudar.

Esta respuesta está inspirada en parte en la sincronización del búfer de pegado de la pantalla GNU y la selección X

enzotib
fuente
El xhost +es un consejo terrible. Permite a cualquier persona en Internet secuestrar su sesión X, capturar sus pulsaciones de teclas, tomar capturas de pantalla, etc. Nunca lo haga. Hay formas correctas de hacer lo mismo; siempre que esté en el mismo host y use el mismo homedir, solo la configuración $DISPLAYdebería funcionar.
R .. GitHub
0

Simplemente use la operación de copia en su aplicación de terminal. Si está utilizando gnome-terminal, por ejemplo, simplemente seleccione prueba y use el menú contextual -> copiar.

Michał Šrajer
fuente
1
¿Qué pasa si la aplicación de terminal no tiene un menú contextual? ¿Qué pasa si no tiene una operación de copia? No voté en contra porque no creo que merezca más de uno.
djeikyb