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

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

Muchas veces, cuando ingreso un comando largo en bash o zsh (estos son los únicos dos shells en los que estoy seguro de haber 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, lo que hará 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 sune1y luego hacia mkdir sune2, esperaría que mi línea de comando fuera mkdir sune2(ya que esto es a lo que he navegado ahora), pero en lugar de eso 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?

Respuesta1

Es probable que la cadena de mensaje tenga caracteres de escape que no se pueden imprimir de manera incorrecta. Si tiene cambios de color en su mensaje, debe colocar \[y \]rodear las secuencias de escape del terminal para que bash pueda saber 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. Veresta sección de TLDP. En zsh, coloque %{y %}alrededor de secuencias de escape.

información relacionada