我摆弄了几个小时,找不到解决方案......
假设我将其打印到终端(在运行新 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"'