为什么我的Bash提示符颜色会使光标出现在错误的位置?

3

我有以下的bash提示符:

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

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

有时候在打字时,我的光标会返回到屏幕左侧并且看起来好像正在覆盖提示符。此外,当使用向上箭头浏览历史记录时,情况变得很奇怪,光标到处乱跑。
我已经检查了以下内容,但它们并没有提供明确的解决方案:
- 为什么我的bash提示符有时会被覆盖? - 为什么我的bash提示符没有正确转义? 我知道问题与提示符的长度不符合bash的期望有关,但我是一个完全的bash新手。我该怎么办才能解决这个问题呢?

你使用的是哪个版本的bash? - kevin
3.2.57(1)-release - JakeParis
1个回答

7
ps1c 的输出不应计入提示符的长度,因此它必须也放在 \[...\] 中。
PS1='\[$(ps1c 243)\]\h \[$(ps1c 177)\]\W \[$(ps1c 214)\]$ \[\e[m\]'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接