3

我有一个随机的问题,我个人觉得这很烦人。我经常使用终端并安装了一个主题,甚至玩弄了提示上显示的内容。但是,如果我写了一行特别的文本,它不会在终端中开始新的一行,而是会开始覆盖当前终端行中屏幕上显示的内容。我想知道是否有人知道解决此问题的方法,以便它确实显示一个新行并且所有输入都可见。

PS1 值

export PS1="\r\n\e[1;32mdave:\w $\e[0;37m "
4

2 回答 2

6

好吧,感谢@Joni 的帖子,我相信解决方案是:

PS1="\r\n\[\e[1;32m\]dave:\w $\[\e[0;37m\] "

也就是说,这里的颜色代码\e[1;32mand\e[0;37m包含在\[and\]中,正如@Joni 建议的那样。

于 2013-07-14T10:14:27.520 回答
3

非打印字符,如颜色的转义码,必须用 \[ 和 \] 包围,以便 bash 在计算行长时知道将它们排除在外。

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/nonprintingchars.html

于 2013-07-14T10:02:32.517 回答