problema con códigos de color de 256 bits en el símbolo del sistema bash

problema con códigos de color de 256 bits en el símbolo del sistema bash

Aquí está mi mensaje de bash; Estoy usandoSecuencias de escape ANSI

reset="\033[0m";
blue="\033[38;5;20m";
cyan="\033[38;5;38m";
green="\033[38;5;35m";
yellow="\033[38;5;227m";
white="\033[38;5;250m";

# Set the terminal title to the current working directory.
PS1="\[\033]0;\w\007\]";
PS1+="\[${yellow}\]\u"; # username
PS1+="\[${white}\]@";
PS1+="\[${green}\]\h"; # host
PS1+="\[${white}\]:";
PS1+="\[${cyan}\]\W"; # working directory
PS1+="\$(prompt_git \"${blue}\")"; # Git repository details
PS1+="\[${white}\]\$ \[${reset}\]"; # `$` (and reset color)
export PS1;

Se ve fantástico, pero a veces el terminal parece tener problemas para calcular la duración del mensaje. Esto sucede tanto localmente en OSX como cuando se realiza SSH en un servidor Ubuntu (en OSX y en Windows a través de PuTTY)

Por ejemplo, esto sucede. Primero escribí "git add [nombre de archivo]" completando con tabulación, luego presioné la tecla "Inicio" para volver al principio de la línea y reemplazar "git add" con "vi". Como puedes ver, está bastante desordenado.

ingrese la descripción de la imagen aquí

Además, si presiono "Fin" para llegar al final de la línea, pasaré del ".php" con varios espacios en blanco.

ingrese la descripción de la imagen aquí

Esto sucede tanto al editar una nueva línea como al editar una línea en mi historial (usando la flecha hacia arriba. Se muestra correctamente, pero tan pronto como uso las teclas de flecha o Inicio/Fin se estropea)

Presionar Ctrl+L para borrar no soluciona el problema, básicamente tengo que empezar de nuevo y volver a escribir toda la línea para evitar problemas.

Respuesta1

Esta línea

PS1+="\$(prompt_git \"${blue}\")"; # Git repository details

no tiene los marcadores \[y \]utilizados por bash para indicarle que no cuente las columnas para cada carácter encerrado. Si no se indica lo contrario, se supone que se deben contar los caracteres imprimibles.

Para discusión:

información relacionada