Pregunta

he puesto lo siguiente en mi archivo ~ / .localsh personalizar mi bash cuando se trabaja con git.

Básicamente quiero conseguir la rama actual está representada en mi terminal. La herramienta muestra gitk ramas con fondo verde y negro en primer plano, así que eso es lo que estoy tratando de hacer.

Lo que tengo obras, pero cuando pulso la flecha hacia arriba en el teclado para desplazarse hacia atrás a través de los comandos anteriores que se sobreescribe.

Esta materia ha pasado a ser antes cuando me di no finaliza una secuencia de colores con [\ e [0m]. Ahora me está sucediendo debido a la función getgitbranch llamando. Creo que tiene algo que ver con el terminal sin saber cuánto tiempo es el símbolo.

Por lo tanto, aquí está el problema ... ¿Cómo utilizo correctamente elementos dinámicos en mi golpe rápido y no lo entiendo manguera cuando utilizo las flechas arriba?

function getgitbranch()
{
git branch | grep "^\*" | cut -c3-
}

function blabla()
{
PS1=""
PS1="$PS1\[\e[0;30m\]\[\e[42m\]\[\$(getgitbranch)\]\[\e[0;49m\]\[\e[0m\] "
PS1="$PS1\[\e[1;35m\][\[\e[0m\]"
PS1="$PS1\[\e[1;33m\]\w\[\e[0m\]"
PS1="$PS1\[\e[1;35m\]]\[\e[0m\]"
PS1="$PS1 \[\e[1;31m\]>\[\e[0m\] "
export PS1
}
¿Fue útil?

Solución

Eliminar el \[\] de todo el $(getgitbranch). La salida de caracteres por esa función en realidad ocupa espacio en la pantalla por lo que desea Bash para dar cuenta de ellos. Usando \[\] dice No contar los caracteres que aparecen en su interior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top