PS1
如果我想要\n
那里,如何正确设置?
PS1="\[\033[38;5;132m\]\n┌─■ testing\n└─■ \[$(tput sgr0)\]"
目前,我的终端前景色与实际提示不同,因此使用反向搜索 (Ctrl+R) 会将行的颜色重置为前景色,而不是 PS1 中指定的提示的颜色。
答案1
您需要在丢失格式的行的开头重复转义编码:
PS1="\[\033[38;5;132m\]\n┌─■ testing\n\[\033[38;5;132m\]└─■ \[$(tput sgr0)\]"
由于其他行也可能受到类似的影响,因此最好在每个换行符后应用转义码。但是,您不需要将它们应用到空行。所以这就是我们最终得到的结果:
PS1="\n\[\033[38;5;132m\]┌─■ testing\n\[\033[38;5;132m\]└─■ \[$(tput sgr0)\]"
我测试过,一切都适合我。 (我已经使用这样的彩色多行提示一段时间了,没有出现任何问题。)
据推测,这里发生的事情是 readline 覆盖该行(从而重置颜色),然后仅使用您的PS1
值的该部分重新绘制它。由于您没有明确地将颜色应用于该行,因此您将获得默认颜色(例如白色)。