Linux: copiar / pegar en TTY

7

Estoy buscando una forma de copiar y pegar dentro de un TTY. Solo tengo un panel táctil, y usarlo gpmes un dolor. La única posibilidad que se me ocurre es usar "pantalla" pero incluso después de haber reasignado Ctrl-A a "` ", sigue siendo inconveniente y lento.
¿Hay enfoques más cómodos?

timn
fuente
1
Interesante pregunta. GPM ha existido desde hace mucho tiempo y no he escuchado muchas quejas, así que estoy un poco dudosa acerca de encontrar una buena alternativa ...
dmckee
gpm funciona bien aquí, pero no es lo suficientemente flexible para mis necesidades. Navegar usando el teclado es mucho más rápido que usar el mouse. Por lo tanto, también prefiero VIM en lugar de editores gráficos. Por lo tanto, las combinaciones de teclas inspiradas en VIM para TTY podrían mejorar la navegación.
timn
En mi humilde opinión después de probarlo, recomendaría usar la pantalla para copiar y pegar. Es compatible con todas las aplicaciones de consola, por lo que puede copiar y pegar con lince / enlaces.
naugtur

Respuestas:

6

Si no le gusta la pantalla o gpm, sus alternativas son bastante limitadas. Las otras opciones que se me ocurren son:

  1. Ejecute terminales bajo X, tal vez usando un administrador de ventanas de mosaico para una apariencia minimalista similar a una consola.

  2. Ejecute un * BSD en lugar de Linux, que le permitirá usar sysmouse en lugar de gpm. Escuché que es mejor, y mis experiencias limitadas de BSD sugieren que podría ser mejor, pero no sé si es mejor en el área de soporte del portapapeles. Sin embargo, parece que en su mayoría simplemente no le gusta su trackpad, que probablemente no se puede arreglar sin reemplazo.

  3. Use canalizaciones, canalizaciones con nombre, archivos de borrador, etc. Por ejemplo, la mayoría de los editores de Unix le permitirán procesar el texto seleccionado mediante scripts de línea de comandos normales, que podrían configurarse para guardar la selección en ~ / .clipboard, por ejemplo. La ejecución de comandos que ingresan texto (cat ~ / .clipboard) debería ser aún más fácil.

  4. Use un editor que admita varios archivos y copie / pegue en ellos. vim lo hace, y emacs también, estoy seguro.

Lee B
fuente
1) Hay algunos defectos con el X-Server que me impiden ser eficaz en él. La primera es que el teclado reacciona extrañamente mucho más lento que en el framebuffer. Esto realmente me molesta porque desplazarse en un documento (VIM) en un URxvt no es tan rápido como un VIM comenzó en un TTY. El siguiente problema es el rendimiento. Aunque estoy usando KMS y un administrador de ventanas en mosaico (i3), el X-Server no se inicia de inmediato. Tampoco las aplicaciones. Incluso las aplicaciones pequeñas como URxvt tardan varios segundos en iniciarse.
timn
Lo que también me preocupa es la hinchazón. X.org es una gran parte de código complejo. Como no soy un jugador, ni tengo que mantener muchos escritorios remotos, personalmente no tengo absolutamente ninguna necesidad de renderizado directo, reenvío X, etc. En realidad, el framebuffer ofrece todo lo que necesito para trabajar. Solo el número de aplicaciones disponibles es un poco limitado. :) 2) Esto realmente no resolvería mi problema, ya que quiero deshacerme de mi mouse.
timn
3) Sí, eso es lo que estoy haciendo actualmente cada vez que quiero visitar un enlace dentro de un documento de texto sin formato en VIM, pero honestamente, copie el enlace en el búfer con "yy", luego escriba ": url tabnew" seguido de un " p "para pegar y un final" w3m $ ((cat url)) "en el shell no es tan cómodo como un URxvt con enlaces" cliqueables ".
timn
4

Puedes usar Ctrl+ ypara pegar. Para copiar, depende de lo que quieras copiar. Si está en el indicador: Ctrl+ upara cortar desde el principio, Ctrl+ kpara cortar hasta el final.

Natim
fuente
Gracias. Estas combinaciones de teclas son realmente útiles. Desafortunadamente, solo puedo usarlos cuando estoy trabajando en el shell pero no en navegadores de texto u otras herramientas de consola.
timn
1

dependiendo de lo que intente copiar y pegar ... bash tiene un modo vi que puede editar sus comandos de una manera más parecida a vi que emacs (bash predeterminado) (zsh tiene un modo vim). poner set -o vi en ~ / .bashrc enable's it.

xenoterracida
fuente
¡Agradable! Como también soy usuario de VIM, las asociaciones de teclas similares a las de VIM son útiles. En realidad, persiste un pequeño problema: a veces hay sitios web donde las URL no están hipervinculadas, sino en texto plano. Si visito dichos sitios web en w3m, tendría que copiar manualmente ese enlace para navegar a él. Otro ejemplo es VIM: si estoy viendo un documento que contiene URL, no es posible simplemente "hacer clic" en ellas (como en URxvt). Aquí también, tengo que copiarlos manualmente. Estas son las dos únicas aplicaciones, un soporte de portapapeles global podría ser útil. ¿Algunas ideas?
timn
1

tmuxes similar screeny le permite copiar y pegar.

dvtm Puede copiar / pegar con el mouse.

usuario203154
fuente
0

Prueba esto:

ls $(xsel -o --display :0)

Si hay "wa *" en el portapapeles, producirá esto en cualquier terminal TTY:

$ ls -l  $(xsel -o --display :0)
-rwxr-xr-x 1 root root 1254 Jan 30 11:44 wav_to_mp3.sh
$ 

Tal vez se puede hacer aún más fácil a través de alias bash. De todos modos lo resolví finalmente de esta manera:

1) copiar texto en el portapapeles en TTY7 - GUI 2) luego cambio a decir TTY1 y escribo el comando: expandclipboard.sh youtube-dl cb 3) el script expande el comando e inserta el contenido del portapapeles en el lugar de cb y corre es.

El código del script es:

    #!/bin/bash
    var1=$1
    if [ "$var1" = "cb" ]; then
    var1=$(xsel -o --display :0)
    fi

    var2=$2
    if [ "$var2" = "cb" ]; then
    var2=$(xsel -o --display :0)
    fi

    var3=$3
    if [ "$var3" = "cb" ]; then
    var3=$(xsel -o --display :0)
    fi

    var4=$4
    if [ "$var4" = "cb" ]; then
    var4=$(xsel -o --display :0)
    fi

    var5=$5
    if [ "$var5" = "cb" ]; then
    var5=$(xsel -o --display :0)
    fi

    var6=$6
    if [ "$var6" = "cb" ]; then
    var6=$(xsel -o --display :0)
    fi

    var7=$7
    if [ "$var7" = "cb" ]; then
    var7=$(xsel -o --display :0)
    fi

    var8=$8
    if [ "$var8" = "cb" ]; then
    var8=$(xsel -o --display :0)
    fi

    echo $var1 $var2 $var3 $var4 $var5 $var6 $var7 $var8
    $var1 $var2 $var3 $var4 $var5 $var6 $var7 $var8

Sé que es inmensamente primitivo, pero soy flojo al pretender que soy más listo que este guión. :-)

xerostomus
fuente
-1

Puede conectarse con otra computadora por SSH, es una opción =).

Francisco Manuel Garca Botella
fuente
1
Bienvenido a Superusuario. Realice el recorrido en superuser.com/Tour para aprovechar al máximo este sitio.
SDsolar
Si, después de realizar el recorrido , todavía cree que esta es una respuesta válida y útil, edítela para explicar cómo responde la pregunta. No responda en comentarios; edite su respuesta para que sea más clara y completa.
Scott