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.
Además, si presiono "Fin" para llegar al final de la línea, pasaré del ".php" con varios espacios en blanco.
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:
- 3.4. Caracteres que no se imprimen en mensajes(CÓMO de solicitud de Bash)
- Cambiando colores(manual xterm)