反向搜索打破多行终端提示

反向搜索打破多行终端提示

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值的该部分重新绘制它。由于您没有明确地将颜色应用于该行,因此您将获得默认颜色(例如白色)。

相关内容