bash 颜色设置搞砸了

bash color settings messing something up

blue="3[38;5;32m\]3[48;5;256m\]"
purple="3[38;5;198m\]"
green="\[3[0;32m\]"
reset="\[3[0m\]"

export PS1="$purple\u$green$(__git_ps1)$blue \W $ $reset"

如果使用更简单的格式设置颜色,如 green,则一切正常。但是如果它们是使用更复杂的格式设置的,比如 bluepurple,它一开始会工作并且看起来是正确的,但是如果我浏览一些以前的命令等,突然该行会跳到一个非常奇怪的地方,提示文本会消失。

这是怎么回事?

确保用 \[\] 包围转义码。这些标记告诉 bash 这些是非打印字符。

blue="\[3[38;5;32m3[48;5;256m\]"
purple="\[3[38;5;198m\]"