bash 提示 - 添加颜色后长命令循环回同一行

bash 提示 - 添加颜色后长命令循环回同一行

注意:我正在使用 Putty,并且我的 TERM 设置为 XTERM。

我已将颜色添加到 bash 提示符中

PS1="\[\033[0;32m\]\d \t \u\e[1;33m@\H /\W $ \[\033[1;37m\]"

只是为了简化 PS1 的英文 -

${GREEN}\d \t \u{YELLOW}@\H \W $ {reset-color}

现在,每当我的命令很长并且不适合屏幕行时,它应该转到下一行,但事实并非如此,并且我键入的每个字符的初始字符开始被替换。整个命令都存在,但不完全可见。它执行正常,所以只是显示失真。

当我返回到第一个字符并尝试删除字符时,情况会变得更糟,整个命令行向上移动,擦除屏幕上以前的数据。

经过一番尝试和错误删除某些部分后,我发现添加 a@会导致上述行为

\e[1;33m

我真的不记得为什么要放这个,而且我无法追溯它。

你能帮我解决这个问题吗?长命令应该放在下一行而不是同一行。

答案1

“@”符号之前的 ANSI 转义序列不包含在\[和中\]。将其附上,应该没问题:

PS1='\[\033[0;32m\]\d \t \u\[\e[1;33m\]@\H /\W $ \[\033[1;37m\]'

顺便说一句,你所谓的“重置颜色”只是将其设置为白色。要实际重置它,请使用\033[0m.

相关内容