Bash Ctrl-A vuelve al inicio de la línea pero no se muestra correctamente

5

Cuando ssh en un servidor Linux desde bash Terminal, puedo usar CTRL + A para regresar al inicio de la línea correctamente, y CTRL + E para ir al final de la línea y todo funciona bien.

Cuando uso bash localmente en mi Mac, cuando uso CTRL + A lógicamente vuelve al inicio de la línea, pero no muestra el cursor en el lugar correcto Muestra el cursor alrededor de 7 caracteres y no actualiza el texto de la línea correcta.

Ejemplo

find . -name "hello.cpp"

CTRL+A!

find . -name "hello.cpp"
       ^~~ cursor shows here ????

Insertar "esto es una prueba" (solo para mostrar)

Pantallas:

find . this is a test -name "hello.cpp"
                      ^~~ cursor is still here ???
       ^~~~~~~~~~~~~^ text inserted here ???
^~~~~~^ unchanged for some reason

Comando ejecutado

this is a test find . -name "hello.cpp"

Yo uso el mismo

PS1=\n \e[1;95m \u@\h \e[0;32m\w \e[1;30m $(__git_ps1 " (%s)" ) \n \e[1;95m \@ \n $ \e[0;30m

como hago en Linux.

Información de versión

  • versión de bash: 3.2.57 (1)
  • versión de terminal: 2.6.1 (361.1)
  • OS X El Capitan, 10.11.5
pregunta MtRoad 05.06.2016 - 18:50

1 respuesta

4

Agregue \[ y \] alrededor de los códigos de color para permitir que bash calcule la longitud de la línea correctamente. Algo como esto:

PS1=\n \[\e[1;95m\] \u@\h \[\e[0;32m\]\w \[\e[1;30m\] $(__git_ps1 " (%s)" ) \n \[\e[1;95m\] \@ \n $ \[\e[0;30m\]

(Esta respuesta está tomada del comentario de @ Mark sobre la pregunta).

    
respondido por el Bennett McElwee 27.10.2016 - 23:57

Lea otras preguntas en las etiquetas