La entrada del terminal no se ajusta correctamente o no se ajusta


15

Por un tiempo, he tenido este problema persistente en todos mis terminales, desde el gnome default y tilda que utilizo hasta los que acabo de dar un giro rápido, donde mi entrada sobrescribirá el inicio de su propia línea cuando debería wrap, y solo wrapping en la siguiente línea.

Presionando Ctrl-A para regresar al inicio de la línea, en cambio, me devolverá a algún lugar en la línea antes de mi primera línea de entrada, desde la cual cualquier entrada más se vuelve muy extraña.

Debido a que esta es una explicación realmente mala y difícil de visualizar, así es como se ve:

Captura de pantalla: prueba de ajuste de línea

¿Alguien sabe qué es esto? No solo sucede bajo ciertas circunstancias, es algo permanente que siempre está presente desde el principio hasta el final de cada sesión en cada emulador de terminal.

Salida de printf "%s\n" "$PS1" "$COLUMNS":

leod:~$ printf "%s\n" "$PS1" "$COLUMNS"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
80

Salida de stty -a:

leod:~$ stty -a
speed 38400 baud; rows 11; columns 140; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

3
Agregue la salida de printf "%s\n" "$PS1" "$COLUMNS", por favor.
muru

Podría ser que su programa testdeje la terminal en un estado inestable. Si es un guión, ¿puede incluir eso en su pregunta? ¿Qué sucede si comienza a escribir sin ejecutar testprimero? ¿El texto se ajusta normalmente?
WinEunuuchs2Unix

1
¿Podemos ver también la salida de stty -apor favor?
conductor de acero

1
@ WinEunuuchs2Unix prueba incorrecta (juego de palabras previsto). Intenta en su type -a testlugar.
muru

1
¿Cuál es el resultado de printf "%q\n" "$PS1"? Puede haber secuencias de escape sin procesar dentro de PS1, y las %sdeja intactas (lo que podría, por ejemplo, cambiar el color de un lado a otro que permanece inadvertido en la salida). %qcita todos los caracteres no imprimibles de forma legible.
egmont

Respuestas:


7

Es posible que su terminal no reconozca el tamaño de la ventana correctamente. Encontré una pregunta relacionada en U&L Stackexchange , y alguien sugirió la siguiente forma de verificar si esto es lo que está sucediendo:

Tipo

shopt | grep checkwinsize

Si la salida no es:

checkwinsize    on

Puedes usar

shopt -s checkwinsize

Activar. Para desactivar:shopt -u checkwinsize


1
Quizás no he probado lo suficiente pero checkwinsizeya estaba on. Solía shopt -u checkwinsizeapagarlo y mi terminal todavía envolvía el texto correctamente. No estoy seguro de si esta respuesta realmente resuelve el problema de OP.
WinEunuuchs2Unix

Brillante. Esta es la solución que necesitaba. La línea de comando funciona perfectamente ahora con más de 80 caracteres.
Randy

@Randy Me alegra saber que funcionó para ti.
Hee Jin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.