Bash 提示符:如何将文本反转为黑底白字,而不是像 tcsh 那样将文本反转为白底黑字

Bash 提示符:如何将文本反转为黑底白字,而不是像 tcsh 那样将文本反转为白底黑字

我是当前tcsh用户,并且在我的文件中有此设置.tcshrc来设置提示:

set prompt="%S MBP %s %~ [\!] "

我的屏幕文本通常是白色背景上的黑色文本,但%S打开黑底白字模式后,文本又%s变回白底黑字。见下文:

在此处输入图片描述

现在我在bash。如何设置相同的提示以使用反转的黑底白字以及反之亦然?

答案1

tcsh 不设置任何特定的颜色 —— 它使用“反转颜色”模式,交换前景和背景,无论它们是什么。

Bash 没有 terminfo 集成,因此您需要通过外部二进制文件获取正确的转义序列...(tput 附带 ncurses)

\[$(tput smso)\]
\[$(tput rmso)\]

...或者直接对它们进行硬编码,因为它们在当前使用的 99% 的终端中都是相同的 – 反向是 CSI 7,非反向是 CSI 27:

\[\e[7m\]
\[\e[27m\]

\[和括号\]不是实际序列的一部分,而是告诉 bash 的行编辑代码(readline),你的 PS1 的这一部分实际上是格式化序列,不会推进光标。提示符的任何“不可见”部分都必须以这种方式标记,否则编辑的文本将无法正确重绘。

PS1="\[\e[7m\] MBP \[\e[27m\] \w [\!] " 

相关内容