Linux:彩色 bash 提示符将中断回车符

Linux:彩色 bash 提示符将中断回车符

当我尝试bash像这样为提示添加颜色时:

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

它会中断回车(当行已满时,它不会转到新行,而是从同一行开始并删除输入的文本)。

如果我删除颜色序列,它就可以正常工作。
我使用 Ubuntu 11.10 和终端(guake 也有同样的错误)。

答案1

您必须将所有转义序列放在和之间\[\]以便“readline”能够正确计算提示的可见长度。如果没有它们,“readline”会认为提示比实际的要长,并且不知道文本何时到达边距。

PS1="\[\e[;31分钟\][\u@\h \W]\$\[\e[m\]

答案2

[ 和 ] 提示也适用于 OS X 10.8.2 上的 bash。

我用:

PS1="[\e[0;37m\W\$(git 分支 2>/dev/null | grep -e '* ' | sed 's/^..(.*)/{\1}/') \$ \e[m ]"

它显示了我当前正在使用的 git 分支。

相关内容