La búsqueda del historial inverso en bash seguida de las teclas de flecha hace que el cursor se muestre en la ubicación incorrecta

La búsqueda del historial inverso en bash seguida de las teclas de flecha hace que el cursor se muestre en la ubicación incorrecta

He notado que muchas veces, cuando estoy buscando el historial inverso desde la línea de comando a través de CTRL+ r, si quiero editar el comando, a veces el cursor salta a la posición incorrecta cuando presiono una tecla de flecha o ingreso CTRL+ ao CTRL+ e. La posición específica a la que salta parece ser un desplazamiento igual al tamaño de mi línea de comando establecida en PS1.

Esto causa dificultades porque la ubicación real del cursor es diferente de lo que se muestra en la pantalla; Las ediciones futuras del comando se representan como si el cursor estuviera donde saltó, pero el comando real conserva la ubicación correcta sin ningún salto.

¿Alguien sabe qué está causando esto o cómo solucionarlo?

EDITAR: Si agrego una nueva línea al final, PS1el problema parece desaparecer. Sin embargo, preferiría ingresar el comando en la misma línea que el mensaje.

Respuesta1

Esto suele deberse a comandos en su historial que tienen más de 1 línea. Cuando selecciona un elemento más corto del historial, no parece tener en cuenta el ancho del mensaje al volver a representar la línea de comando, por lo que todo lo que sigue a ese comando largo es complicado.

La solución fácil que encontré es presionar la tecla de inicio, insertar "echo" y presionar Enter. Luego recupere el último comando y edítelo desde allí. (Primero quitando el eco. :)

VEA TAMBIÉN la respuesta de Alexander-somov a continuación, que identifica una forma de solucionar la causa más común de este problema.

Respuesta2

Quizás tenga secuencias de escape que no se imprimen en PS1 y que no estén encerradas entre \[ y \].

Asegúrese de adjuntarlos todos así:

\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]

información relacionada