¿Por qué algunos comandos (a menudo largos) están confusos en bash y zsh?

10

Muchas veces, cuando ingreso un comando largo en bash o zsh (estos son los únicos dos shells en los que estoy seguro de que he visto esto), el cursor se deforma en algún lugar en el medio de la cadena que estoy ingresando, ¿alguien puede explicar por qué esto es así? y si se puede hacer algo al respecto?

He notado que esto sucede a menudo cuando navego por el historial de mi shell (usando las teclas de flecha), cuando encuentro una entrada larga, la nueva entrada larga se mezclará con la entrada anterior, haciendo que el texto sea confuso.

Tengo un ejemplo con cadenas cortas, que acabo de notar:

La historia contiene:

mkdir sune1
mkdir sune2

Si navego hacia mkdir sune1, y luego hacia mkdir sune2, esperaría que mi línea de comando sea mkdir sune2(ya que esto es a lo que ahora he navegado), pero en cambio obtengo mkdir1sune2.

He notado esto con frecuencia durante años, pero nunca dejé que me molestara demasiado, ¡pero creo que es hora de un cambio! Entonces, ¿alguna idea?

Jonatán
fuente

Respuestas:

8

Su cadena de solicitud probablemente haya escapado incorrectamente de caracteres no imprimibles. Si tiene algo así como cambios de color en su solicitud, debe colocar \[y \]rodear las secuencias de escape de la terminal para que bash pueda decir que no ocupan espacio en la pantalla; de lo contrario, calcula mal dónde está el comando real en la pantalla y lo actualiza. en el lugar equivocado Vea esta sección de TLDP . En zsh, poner %{y %}alrededor de secuencias de escape.

Gordon Davisson
fuente
De hecho, tengo colores en mi mensaje, intentaré escapar de ellos o eliminarlos y ver si eso ayuda. ¡Gracias!
Jonatan
Considere usar el módulo de color de zsh. Debe evitar los errores stackoverflow.com/questions/6159856/…
Francisco