Desplazamiento horizontal en la terminal

12

Entonces, creo que ya hay 2 preguntas sobre esto. Todos ellos tienen que ver con tail -fy, por lo tanto, las personas dan la respuesta tangente de "usar menos".

Lo necesito para todo, cada comando, etc. El problema es que necesito ejecutar muchas ventanas de consola e incluso con varios monitores todavía necesito reducirlas. Como consecuencia, casi todos los resultados se eliminan mediante un ajuste de línea y son difíciles de leer.

Una solución sugerida es echo -ne '\e[?7l', que funciona, algo. El problema ahora, ¿hay alguna forma de obtener barras de desplazamiento en una consola?

Ubuntu 12.10, Terminal

srcspider
fuente
Como ejemplo (en respuesta a todos los comentarios de "así no es como funcionan los terminales"), señalaría que la Consola de Ubuntu para Windows admite esta función. Las aplicaciones como lsy mceditfuncionan bien en él, porque el ancho de la pantalla y el ancho del búfer se manejan por separado.
cz

Respuestas:

10

Lo que está preguntando es un terminal de ancho infinito, una parte del cual se muestra. No es cómo funcionan tradicionalmente los terminales ni cómo las aplicaciones esperan que funcionen.

Por ejemplo, si el terminal tiene un ancho infinito, ¿cómo deben funcionar las aplicaciones visuales cuando quieren mostrar algo en el medio de la pantalla?

Sin embargo, algo que puede hacer es usar GNU screen(se supone que puede adjuntar una sesión de pantalla desde varios terminales de diferentes tamaños para que la pantalla sepa cómo mostrar una pequeña ventana de un terminal más grande) y establecer el screenancho de las ventanas en algo muy grande y luego engañar a las aplicaciones visuales para que piensen que el ancho de la pantalla es el original.

Me gusta (dentro screen)

c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"

Algunas aplicaciones visuales funcionarán bien, otras no tan bien (para instalar cuando realizan un posicionamiento relativo o cuando dependen de la envoltura del terminal). vimParece funcionar bien.

Luego, para desplazarse y copiar datos pegados, la única opción es usar screenel modo de copia . ( <prefix>]) y moverse alrededor del cursor (ver info -f screen -n Movementpara moverse en modo copia ).

tmux Puede tener capacidades similares.

Este terminatoremulador de terminal (basado en Java), que no es el terminatorque viene con ubuntu, también lo hace con un ancho de terminal infinito:

  • las líneas nunca se envuelven
  • A las aplicaciones visuales se les dice que el ancho de la pantalla es lo que cabe en la ventana, no el infinito.
  • también funcionaría mejor que la screensolución basada anteriormente en que su entrada terminfo afirma que no hace un ajuste de línea para que las aplicaciones lo sepan, y BS al comienzo de la línea no se mueve al final de la línea anterior.
Stéphane Chazelas
fuente
Ya estoy en un entorno de interfaz gráfica de usuario, así que si quiero abrir un archivo en un editor visual, puedo iniciar una interfaz gráfica de usuario desde el terminal. Es más fácil copiarlos que en un terminal de todos modos, ya que no puede simplemente arrastrar y seleccionar un bloque en un terminal sin que se corte. Ejecutando screen -X width -w 1000devoluciones No screen session found., alguna idea?
srcspider
@srcspider Como dije, necesitas hacer eso dentro screen. Comience screenprimero.
Stéphane Chazelas
okey Creo que te entiendo ahora, básicamente debería correrscreen -X width -w 1000 <mycommand>
srcspider
1
@srcspider. No. screenes un emulador de terminal basado en terminal. Así que hay que iniciar por primera vez como que había necesidad de iniciar xtermo gnome-terminalprimera, mediante la ejecución del screencomando. Luego, dentro de ese nuevo emulador de terminal, ejecuta ese screen -Xcomando para indicarle screenque cambie el ancho de su ventana. Vea también mi respuesta editada para el terminatoremulador que sospecho que preferirá.
Stéphane Chazelas
¡Gracias! Incluso si de alguna manera no consigo que trabajen, al menos ahora sé por qué no puedo hacer que trabajen así.
srcspider
6

Si bien Emacs es principalmente un editor e IDE¹, coincide con su problema muy bien. Puede ejecutar un programa dentro de una ventana de Emacs, y Emacs lo muestra en una terminal tonta de infinito ancho y alto. Si el cursor está al final del búfer, la ventana se desplazará a medida que el programa produzca resultados; Si mueve el cursor, la ventana permanecerá fija a medida que crezca la salida.

Escriba M-x shell RET(es decir, Alt+ x shell Return) para iniciar un shell en un búfer de Emacs. Escriba C-u M-x shell RETo M-1 M-x shell RETpara iniciar otro shell. Puede ejecutar un programa en cada shell y organizar los búferes en múltiples ventanas como lo desee.

Sometimes A veces se dice que es un sistema operativo mejor que el editor, pero solo por personas que no lo usan, eso es solo una broma.

Gilles 'SO- deja de ser malvado'
fuente