¿Cómo copiar texto de la línea de comando al portapapeles sin usar el mouse?

10

Estoy tratando de encontrar una manera de copiar el texto actual en una línea de comando al portapapeles SIN tocar el mouse. En otras palabras, necesito seleccionar el texto solo con el teclado. Encontré una solución a medio camino que puede conducir a la solución completa:

Ctrl+a - Moverse al comienzo de la línea.

Ctrl+k - corta toda la línea.

Ctrl+y - retira el texto cortado.

Alternativamente, también puedo usar Ctrl+upara realizar los primeros 2 pasos.

Esto, por supuesto, funciona, pero estoy tratando de averiguar dónde se guarda exactamente el texto cortado. ¿Hay alguna forma de acceder sin usar Ctrl+y? Soy consciente xclipe incluso lo uso para canalizar texto directamente al portapapeles, por lo que estaba pensando en canalizar los datos guardados Ctrl+ken xclip, pero no estoy seguro de cómo hacerlo.

El método que obtuve hasta ahora es escribir un script que se usa xdotoolpara agregar echoal principio de la línea y | zxcal final de la línea, y luego presiona enter ( zxcsiendo un alias personalizado que básicamente se canaliza xclip). Esto también funciona, pero no es una solución realmente "limpia".

Estoy usando Cshell si eso hace alguna diferencia.

EDITAR: No quiero usar screencomo solución, olvidé mencionar eso.

¡Gracias!

Sancho Pancho
fuente
Sin relación, pero también es bueno saberlo: Shift-Ins pega la selección en una xterm, si no solo desea cortar texto, sino también pegarlo.
dirkt

Respuestas:

7

Si usa xtermo una derivada, puede configurar las combinaciones de teclas para iniciar y finalizar una selección de texto, y guardarla como la selección primaria X11 o un búfer de corte. Ver man xterm. Por ejemplo, agregue a su ~/.Xdefaults:

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

Solo puedes tener una XTerm*VT100.Translationsentrada. Actualice el servidor X11 con el nuevo contenido del archivo con xrdb -merge ~/.Xdefaults. Comience una nueva xterm.

Ahora, cuando ingrese algo en el símbolo del sistema, al escribir 1en el teclado numérico comenzará a seleccionar texto en la posición actual del cursor de texto, al igual que el botón 1 del mouse. Mueva el cursor con las teclas de flecha, luego presione 2en el teclado numérico y el texto intermedio se resaltará y copiará en la selección primaria y cutbuffer0. Obviamente, se pueden elegir otras teclas y acciones más adecuadas. De manera similar, puede pegar la selección con enlaces como insert-selection(PRIMARY).

meuh
fuente
¡Esto es genial! No tenía idea de que pudieras hacer esto. ¡Muy útil! ¿Es posible usarlo en konsole?
Sancho Pancho
2
Eché un vistazo rápido al manual de Konsole, pero no menciona este tipo de control. Es poco probable que encuentre esto en la mayoría de los emuladores de terminal, ya que prefieren proporcionar configuraciones que sean más fáciles de administrar a través de menús y cuadros de diálogo.
meuh
El translationsrecurso es la característica X Toolkit aludida aquí y allá que no tiene contrapartida en otros kits de herramientas. Sin embargo, puede cambiar entre conjuntos de traducciones utilizando la keymapfunción (observando el comentario sobre "Solo puede tener uno").
Thomas Dickey
Gracias por todos los comentarios. Sin embargo, aún no descubrí el portapapeles ctrl-k / ctrl-y, ¿alguien sabe cómo acceder a eso o dónde guarda realmente el texto cortado?
Sancho Pancho
@SanchoPancho Dependiendo de su csh, implementa un anillo interno que mantiene el texto cortado y lo devuelve con los enlaces yank y yank-pop. No creo que tengas ningún otro acceso a este anillo. ver hombre csh .
meuh