¿Se corrigieron los errores de visualización de ajuste de línea bash y retroceso en Mac OS X?

14

Cuando abro Terminal (en Mac OS X 10.5.8) y escribo una línea de comando larga: texto alternativo

... el texto no pasa a la siguiente línea cuando se ajusta: texto alternativo texto alternativo

Además, a veces cuando escribo un comando y luego retrocedo (o flecha hacia arriba o ^ U): texto alternativo

... toda la línea no se borra y no puedo retroceder más allá de cierto punto: texto alternativo texto alternativo

¿Es este un error conocido de bash (en Mac OS X)? ¿Hay alguna solución?

Actualización: Juliano estaba en lo correcto, el problema fue causado por delimitar incorrectamente una secuencia de código de consola en mi variable PS1. Cambiando:

export PS1='\[\033[1;34m\]\$\]\033[0m\] '

... en mi .bashrcpara:

export PS1='\[\033[1;34m\]\$\[\033[0m\] '

...resuelve el problema.

Daryl Spitzer
fuente
1
+1 para las capturas de pantalla más hermosas de una pantalla de terminal que he visto.
Pausado hasta nuevo aviso.
1
Las dos líneas de código que mostró en su actualización son idénticas.
Magne
Buena captura, @Magne. Han pasado cuatro años desde que vi esto, así que no recuerdo específicamente, pero supongo que faltaba el "antes" a \].
Daryl Spitzer
no son idénticos: el primero tiene en \]lugar de '[`
Ohad Cohen

Respuestas:

19

El comportamiento es consistente con tener códigos de consola en su solicitud (para cambiar el color, etc.) y no marcarlos correctamente para que bash sepa que son invisibles.

Antes que nada, haz esto:

PS1='\w\$ '

Y luego inténtalo de nuevo. Si se resuelve el problema, mis sospechas son correctas.

Cada secuencia de código de consola debe estar delimitada con \[y \]en la variable PS1. Le dicen a bash que lo que esté allí no mueve la posición del cursor. Lea el manual de bash para más información.

Juliano
fuente
Ese fue el problema. ¡Gracias! Actualizaré mi pregunta con detalles.
Daryl Spitzer
¿Y si no resuelve el problema?
Levesque
3

Para ayudar a generar un aviso desinfectado, intente http://www.kirsle.net/wizards/ps1.html es bastante impresionante. Solo tenga cuidado con los corchetes en su mensaje, intenta escapar de ellos o algo así.

Dan Green
fuente
+1 Si bien la respuesta de @ Juliano es técnicamente correcta, este enlace aquí es lo que establece los tputcomandos correctos , que ha corregido la nueva línea, `` nueva línea y otras correcciones de 'historial + retroceso' que no pueden solucionarse usando otros códigos ANSI.
Eric Duncan