Copiar y pegar con URxvt

27

Estoy usando URxvt 9.20 en Debian Jessica y estoy buscando una manera de copiar y pegar texto como solía hacerlo con el terminal gnome ( Ctrl+ Insertpara copiar, Shift+ Insertpara pegar).

Funciona dentro de diferentes consolas urxvt, aunque no funciona entre, por ejemplo, urxvt y iceweasel.

Intenté de acuerdo con el manual en archlinux , pero no funcionará (aunque en realidad no quiero usar Shift+ Ctrl+ C/ Vvalió la pena intentarlo).

Recursos X:

! ******************
! urxvt config
! ******************

! Disable Perl extension
! If you do not use the Perl extension features, you can improve the security
! and speed by disabling Perl extensions completely. 
URxvt.perl-ext:
URxvt.perl-ext-common:

! Font spacing
! By default the distance between characters can feel too wide. It's controlled
! by this entry: 
! URxvt.letterSpace: -1

! -- Fonts -- !
URxvt.font:xft:Monospace:pixelsize=13
URxvt.boldfont:xft:Monospace-Bold:pixelsize=13
!URxvt*font:  -xos4-terminus-medium-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:pixelsize:12
!URxvt*boldFont:  -xos4-terminus-bold-*-*-*-14-*-*-*-*-*-iso8859-15,xft:terminus:bold:pixelsize:12
!URxvt*italicFont:  xft:Bitstream Vera Sans Mono:italic:autohint=true:pixelsize=12
!URxvt*boldItalicFont:  xft:Bitstream Vera Sans Mono:bold:italic:autohint=true:pixelsize=12

! Disable scrollbar
!URxvt*scrollBar: false

! Scrollbar style - rxvt (default), plain (most compact), next, or xterm
URxvt.scrollstyle: plain

! Background color
!URxvt*background: black
URxvt*background: #1B1B1B

! Font color
!URxvt*foreground: white
URxvt*foreground: #00FF00

! Other colors
URxvt*color0: black
!URxvt*color1: red3
URxvt*color1: #CD0000
URxvt*color2: green3
!URxvt*color3: yellow3
URxvt*color3: #C4A000
URxvt*color4: blue2
!URxvt*color4: #3465A4
URxvt*color5: magenta3
URxvt*color6: cyan3
URxvt*color7: gray90
URxvt*color8: grey50
URxvt*color9: red
URxvt*color10: green
URxvt*color11: yellow
!URxvt*color12: blue
URxvt*color12: #3465A4
URxvt*color13: magenta
URxvt*color14: cyan
URxvt*color15: white
! ******************
! /urxvt config
! ******************
Thomas John
fuente
Sabes que puedes copiar seleccionando texto con el mouse y pegar haciendo clic con el botón central, ¿verdad? Si no lo haces, ¿es suficiente?
terdon
2
El problema aquí es que los dos programas están usando diferentes selecciones de X-Windows, los programas tradicionales usan la PRIMARYselección con Shift + Insert, y los nuevos programas que intentan imitar las combinaciones de teclas de otros sistemas pegan la CLIPBOARDselección para la misma combinación de teclas. En GTK + se ha vuelto más difícil pegar PRIMARYsin usar el mouse (clic central, como dijo @terdon, o clic izquierdo + derecho, si la emulación del tercer botón está activada). Pero, si bien esto explica por qué los programas no pasan los datos entre ellos, me pregunto por qué la sugerencia de wiki de arco no funcionó.
njsg
¿Cómo probaste las sugerencias de ArchWIki? Si está utilizando una pantalla de inicio de sesión gráfica para iniciar X, deberá volver a cargar los recursos X utilizando xrdb(debería ser xrdb ~.Xresourceso algo similar). De cualquier manera, también necesita reiniciar urxvt. En algunas distribuciones, es posible que deba instalar un paquete separado con las extensiones perl, pero esto parece estar incluido en el rxvt-unicodepaquete base en debian (aunque puedo estar equivocado).
njsg
1
@terdon gracias por tu comentario. Seleccionar con el mouse y pegar con el clic central sí funciona. Por desgracia, no es lo que me gustaría lograr, me gustaría usar Ctrl + Insertar / Shift + Insertar como estoy acostumbrado (los hábitos y mantras nos hacen trabajar de manera eficiente y rápida, no estoy usando el mouse a menudo (Yo uso i3wm).)
Thomas John
@njsg muchas gracias por explicar las diferencias principales / portapapeles. Probé la extensión Perl mencionada en ArchWiki en "Asignaciones de teclas personalizadas", no hizo ninguna diferencia (comenté la parte "Desactivar extensión Perl" en mi .Xresources antes de ponerla en uso, por supuesto). - Sí, lo hice $ xrdb -merge ~/.Xresourceprimero - Sí, reinicié urxvt, o abrí una nueva ventana de terminal urxvt, lo que tiene el mismo efecto que olvidé mencionar un punto importante: no tengo instalado un entorno de escritorio: - I ' m solo uso un administrador de Windows (i3wm) - Sí uso un administrador de inicio de sesión gráfico
Thomas John

Respuestas:

16

Desafortunadamente, el sistema X Window tiene varios mecanismos diferentes de copiar y pegar .

Rxvt, como la mayoría de las aplicaciones X de la vieja escuela, usa la selección primaria. En general, cuando selecciona algo con el mouse, se copia automáticamente en la selección primaria, y cuando hace clic con el botón central para pegar, pega la selección primaria.

Ctrl+ Cy Ctrl+ V(u otras combinaciones de teclas) en aplicaciones que usan kits de herramientas de GUI modernos, como Gnome-terminal y Firefox, copie / pegue desde el portapapeles.

Existen herramientas para facilitar el trabajo con las selecciones. En particular, si solo desea tener una única selección que se copia, ya sea que seleccione con el mouse o presione Ctrl+ C, puede ejecutar autocutsel (iniciarlo desde su .xinitrco desde los programas de inicio de su entorno de escritorio), que detecta cuándo se copia algo en una de las selecciones y la copia automáticamente a la otra.

Gilles 'SO- deja de ser malvado'
fuente
20

Para pegar texto, en urxvt / rxvt-unicode puede usar middle buttonpara pegar la selección PRIMARIA y Alt/Meta+ middle buttonpara pegar el CLIPBOARD.

Para copiar, solo marcar el texto en el terminal lo copia a la selección PRIMARIA. Sin embargo, se necesita algo de trabajo para copiar a la selección CLIPBOARD. Combiné la información de la página de Archlinux que vinculó con los scripts incluidos en rxvt-unicode-9.19 y terminé con un script como este: https://gist.github.com/xkr47/98224ed6b0860cb55ec0 . Le permite a uno usar Ctrl+ Inserto Ctrl+ Shift+ c`para copiar el texto seleccionado actualmente en el CLIPBOARD.

Espero que esto ayude.

Para el registro, tampoco ejecuto un entorno de escritorio; usando Sawfish como gestor de ventanas.

Consejo : Puede monitorear el portapapeles en una terminal usando el programa "xclip":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xclip -o -sel c ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -o -sel p ; echo ; echo -e '\033[m--------' ; sleep 1 ; done

o usando el programa "xsel":

while :; do echo -ne '\033[31;1mCLIPBOARD: ' ; xsel -b -o ; echo ; echo -ne '\033[32;1mPRIMARY:   ' ; xclip -p -o ; echo ; echo -e '\033[m--------' ; sleep 1 ; done
Jonas Berlin
fuente
Tema secundario: Información sobre cómo funcionan las selecciones PRIMARY y CLIPBOARD
Jonas Berlin
El botón central Alt / Meta + me funciona en Debian
Jing
Esta es la respuesta correcta.
Winny
15

Existen mecanismos incorporados para copiar / pegar a / desde PRIMARY(se usa cuando el usuario selecciona algunos datos) y CLIPBOARD(se usa cuando el usuario selecciona algunos datos y solicita explícitamente que se "copien" en el portapapeles, por ejemplo, invocando "Copiar" en el menú "Editar" de una aplicación). Más sobre diferentes portapapeles en X .

Para el CLIPBOARDbúfer es CTRL+META+C(que es CTRL+ALT+Cpara el teclado de PC estándar) para copiar y CTRL+META+V( CTRL+ALT+V) para pegar.

Cita de urxvt man :

LA SELECCIÓN: SELECCIÓN Y PASADO DE TEXTO

El comportamiento de la selección de texto y el mecanismo de inserción / pegado es similar a xterm (1).

Seleccionando :

Haga clic izquierdo al comienzo de la región, arrastre hasta el final de la región y suelte; Haga clic derecho para extender la región marcada; Doble clic izquierdo para seleccionar una palabra; Haga triple clic con el botón izquierdo para seleccionar la línea lógica completa (que puede abarcar varias líneas de pantalla), a menos que se modifique mediante palabras clave de triple recurso.

Comenzar una selección mientras presiona la tecla Meta (o las teclas Meta + Ctrl) (Compilar: volantes) creará una selección rectangular en lugar de una normal. En este modo, cada fila seleccionada se convierte en su propia línea en la selección, y el espacio en blanco final se subraya visualmente y se elimina de la selección.

Pegar :

Al presionar y soltar el botón central del mouse en una ventana de urxvt, el valor de la selección PRIMARY (o CLIPBOARD con el modificador Meta) se inserta como si se hubiera escrito en el teclado.

Al presionar Shift-Insert también se inserta el valor de la selección PRIMARIA.

rxvt-unicode también proporciona los enlaces Ctrl-Meta-c y para interactuar con la selección CLIPBOARD. El primer enlace hace que el valor de la selección interna se copie en la selección CLIPBOARD, mientras que el segundo enlace hace que se inserte el valor de la selección CLIPBOARD.

petRUShka
fuente
¿Por qué no creo que las soluciones estén en la página del manual? ¡Ahora todo está claro para mí! ¡Gracias!
Enrico Maria De Angelis
1
Por cierto, me he olvidado de cuál se pega entre la selección principal y el portapapeles cuando selecciono algo antes de hacer clic derecho y pegar. Ahora está claro: antesPRIMARIO .
Enrico Maria De Angelis
12

Puede hacer una copia de urxvt tanto en el primario como en el portapapeles con la extensión perl de selección al portapapeles. Esto los mantiene sincronizados, por lo que solo debe copiar una vez en urxvt y debería funcionar en aplicaciones que usan cualquiera de los dos.

URxvt.perl-ext-common: selection-to-clipboard
degenerateJoe
fuente
2
¿Puedo cambiar shorcut para esta extensión? No me gusta por defecto ctrl-alt-c / v. Me gustaría tener ctrl-shift-c / v.
Trismegistos
3
@Trismegistos, tener un loook aquí
Coder