彩色终端输出忽略复位序列。颜色继续

彩色终端输出忽略复位序列。颜色继续

我摆弄了几个小时,找不到解决方案......

假设我将其打印到终端(在运行新 Linux Mint 的虚拟机的基因组终端中使用 bash 和 zsh 进行测试):

python3
print("\033[41mFOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\033[0m BAR")
  • \033[41m为后面的文本启用红色背景。
  • \033[0m将背景重置为默认值。
  • 假设有足够的生成一个输出,该输出恰好填充终端中的一行半。

在新的终端中,输出如下所示(如我所料):

|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|
|=================================|
|OOOOOOOOOOOOOO BAR               |
|==============                   |
|                                 |
  • 每个带下划线的字符=都有红色背景。
  • |定义终端的边界。

所以我们看到FOO...有红色背景和BAR没有红色背景。

如果我再次运行该命令,我会得到以下信息:

|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|
|=================================|
|OOOOOOOOOOOOOO BAR               |
|==============    ===============|
|                                 |

之后BAR线继续呈红色...我不知道为什么?任何想法?

答案1

当彩色文本绕过可用列时,Mac OS X 上的 iTerm2 也会执行此操作。一种解决方法可能是BAR通过写入后擦除到行尾CSI Ps K Erase in Line (EL) 控制序列,例如

$ perl -e 'print "\e[41m".("a"x120)."\e[0mBAR\e[K"'

相关内容