0

我将提示设置为有颜色:PS1='\e[3;32m[\u@\h:\W]$ \e[m'

但是,现在很长的命令不再自动导致出现新行。相反,超过一行的命令将开始出现在当前行的左侧,覆盖当前字符。

4

1 回答 1

7

提示中的非打印字符需要包含在内,\[...\]以便bash准确计算提示的可见长度。

PS1='\[\e[3;32m\][\u@\h:\W]$ \[\e[m\]'
     ^^        ^^            ^^    ^^

bash本身不知道那些字节不会被终端显示;是您的终端,而不是显示 7-byte 序列,而是\e[3;32m简单地更改用于显示以下字符的颜色。\u另一方面,它被用户名bash本身替换,因此您不必做任何特别的事情来告诉bash如何正确处理它。

于 2013-11-04T21:35:36.717 回答