为什么我的Bash提示颜色会使光标显示在错误的位置

时间:2017-02-08 19:11:04

标签: bash terminal .bash-profile

我收到了以下bash提示:

# helper function to set colors
function ps1c() {
    tput setaf $1;
}

PS1='$(ps1c 243)\h $(ps1c 177)\W $(ps1c 214)$ \[\e[m\]';

键入时,有时我的光标会返回到屏幕的左侧,看起来它会覆盖提示。此外,当使用向上箭头浏览我的历史记录时,事情变得奇怪,光标遍布整个地方。

我已检查过以下内容,但他们并没有真正就如何解决问题提供明确答案:

我知道问题与提示的长度有关,而不是bash所期望的,但我是一个完整的bash noob。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:3)

ps1c的输出不应计入提示的长度,因此它也必须包含在\[...\]中。

PS1='\[$(ps1c 243)\]\h \[$(ps1c 177)\]\W \[$(ps1c 214)\]$ \[\e[m\]'