6 votos

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

Cuando hago ssh en un servidor Linux desde la Terminal bash, puedo usar CTRL + A para volver 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 principio de la línea, pero no muestra el cursor en el lugar correcto. Muestra el cursor a 7 o más caracteres de distancia y no actualiza el texto de la línea correctamente.

Ejemplo

find . -name "hello.cpp"

CTRL + A ¡!

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

Insertar "esto es una prueba" (sólo para mostrar)

Muestra:

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

Orden ejecutada

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

Utilizo 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 lo hago en Linux.

Información de la versión

  • versión de bash: 3.2.57(1)
  • versión del terminal: 2.6.1 (361.1)
  • OS X El Capitan, 10.11.5

5voto

Bennett McElwee Puntos 211

Añadir \[ y \] alrededor de los códigos de color para que bash pueda calcular correctamente la longitud de la línea. Algo así:

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).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X