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

Why do my Bash prompt colors make cursor appear in wrong spot

我收到以下 bash 提示:

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

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

打字时,有时我的光标 returns 会移到屏幕左侧,看起来像是覆盖了提示。此外,当使用向上箭头浏览我的历史记录时,事情变得很奇怪,并且光标到处都是。

我已经检查了以下内容,但它们并没有真正提供关于如何解决问题的明确答案:

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

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

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