当我尝试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 分支。