我的 bash_profile 中设置了以下提示:
export PS1='\[\e[1;94m\h:\W \u\e[1;93m\$\e[0m \]'
# default = '\h:\W \u\$ '
不幸的是,在某些情况下我遇到了问题:
在空白提示符下,我输入一个字符,然后按退格键 - 提示符被完全删除,光标移到终端的左边缘,而不是简单地删除该字符
如果我使用向上和向下箭头键自动完成跨越多行的命令,则只有当前行会发生变化,但上面的行(提示后)保持不变。
我怎样才能纠正我的提示,使它在任何情况下都能像默认提示一样正常运行?
答案1
您希望\[ ... \]
在提示的非打印部分(即转义序列)周围使用 ,而不是整个提示。由于您在整个提示周围都使用了 ,因此 bash 无法确定提示占用了多少屏幕空间,并且会在错误的位置重新绘制命令。它应该是这样的:
export PS1='\[\e[1;94m\]\h:\W \u\[\e[1;93m\]\$\[\e[0m\] '