bashrc PS1:用户提示不会清除整个文本

VIE*_*VIE 6 bash prompt escape-characters

用户提示:

user - / :
Run Code Online (Sandbox Code Playgroud)

向上/向下键定位历史命令。

user - / : historical command
Run Code Online (Sandbox Code Playgroud)

清除“历史命令”:

user - / :hist
Run Code Online (Sandbox Code Playgroud)

无论我按 BackSpace 多少次……都无法删除“hist”部分。

从技术上讲,它甚至不存在。但在屏幕上它不会清除,直到我点击“输入”

user - / :hist
user - / :
Run Code Online (Sandbox Code Playgroud)

是什么原因造成的?

问题可能是由于我在这里使用的颜色。但如何纠正呢?

PS1="\[\033[38;5;190m\]\u - \W : \e[m"
Run Code Online (Sandbox Code Playgroud)

ter*_*don 8

您最终的ANSII 转义序列尚未完成。\e[0m与其他代码一样,重置代码 ( ) 需要一个[. 将您更改PS1为:

PS1="\[\033[38;5;190m\]\u - \W : \[\e[0m"
Run Code Online (Sandbox Code Playgroud)

或者,为了保持一致:

PS1="\[\033[38;5;190m\]\u - \W : \[\033[0m"
Run Code Online (Sandbox Code Playgroud)