En este hilo, la respuesta principal muestra cómo copiar texto que se ha seleccionado previamente con el mouse en un terminal gnomo, al portapapeles en X11.
Mi pregunta es: digamos que copio un texto del terminal usando bash set-mark y cobro atajos de teclado (es decir, set-mark
+ M-w
). ¿Es posible compartir este portapapeles con X11?
EDITAR : En la pregunta original, hablé sobre compartir el portapapeles con GNOME, pero como Gilles señala a continuación, GNOME no tiene específicamente un portapapeles (es general para X), por lo que he actualizado la pregunta.
Respuestas:
El portapapeles de Bash es interno para bash, bash no se conecta al servidor X.
Lo que podría hacer es cambiar el significado de
M-w
copiar la selección al portapapeles X además del portapapeles interno de bash. Sin embargo, la integración de bash es bastante flexible, y no creo que haya una manera de acceder a la información de la región o al portapapeles desde el código de bash. Puede hacer un enlace de teclas para copiar toda la línea al portapapeles X.²Si desea hacer cosas sofisticadas en el shell, cambie a zsh, que (entre otras ventajas) tiene una integración mucho mejor entre el editor de línea y el lenguaje de secuencias de comandos.
¹ Gnome no tiene específicamente un portapapeles, esto es general para X.
² A partir de bash 4.1, hay un error en el código de análisis de claves: las secuencias de teclas enlazadas
bind -x
no pueden tener más de dos caracteres. Creo que bash 4.2 corrige algunos casos de prefijos más largos, pero no todos; No he investigado los detalles.fuente
zsh
.copy_line_to_x_clipboard
es exactamente lo que me faltaba durante mucho tiempo: el equivalente de copia de shift + insert. Cambié a ctrl-x (bind -x '"\C-x"
) porqueEsc
está demasiado lejos para mi gusto (y Cc sería la opción más tonta posible).esc
seguido de ese carácter, por lo que puede escribirlo comoalt-w
.@Gilles ya dio una excelente respuesta. Solo me gustaría mencionar la existencia de
xclip
, que también es una forma muy útil de copiar la salida del terminal al portapapeles X, simplemente colocando cualquier cosa en él:fuente
xclip
copia en el búfer primario de forma predeterminada. Para usar el portapapeles, usexclip -selection clipboard
.