终端颜色导致提示跳回到行的开头

时间:2014-01-18 03:32:26

标签: shell command-line colors terminal prompt

使用git时,我决定将.git-prompt.sh添加到我的.bashrc文件中。此文件显示我当前正在处理的分支的名称。 我还决定添加一些颜色。

if [ -f ~/.git-prompt.sh ]; then

    #include the branch detection file
    source ~/.git-prompt.sh

    #add the current branch in yellow
    export PS1='$(__git_ps1 "[\e[38;5;220m%s\x1b[0m]")'

    #make the rest of the text in the prompt gray
    PS1+="\e[38;5;245m\w$ "

    #set colors back to default
    PS1+="\033[0m"
fi

使用任何终端(gnome-terminal,xterm,quake)会导致同样的问题。当输入的行太长时,

enter image description here

提示会跳回到行的开头。这可能是因为彩色文本的实际长度要长得多。

enter image description here

如果没有这种打嗝,如何获得终端颜色?

1 个答案:

答案 0 :(得分:1)

我认为你需要写

#add the current branch in yellow
export PS1='$(__git_ps1 "[\[\e[38;5;220m\]%s\[\x1b[0m\]]")'

#make the rest of the text in the prompt gray
PS1+="\[\e[38;5;245m\]\w$ "

#set colors back to default
PS1+="\[\033[0m\]"

所以你有\[\]围绕所有颜色指令。