何時間も迷っていますが、解決方法はありません...
これを端末に印刷するとしましょう。(新しいLinux Mintを実行している仮想マシンのゲノム端末でbashとzshを使用してテストされました。):
python3
print("\033[41mFOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\033[0m BAR")
\033[41m
次のテキストに対して赤い背景を有効にします。\033[0m
背景をデフォルト値にリセットします。- 十分だと仮定すると酸素端末から正確に1行半を埋める出力を生成します。
新しい端末では、出力は次のようになります(予想どおり)。
|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|
|=================================|
|OOOOOOOOOOOOOO BAR |
|============== |
| |
- 下線付きの各文字の
=
背景は赤色です。 |
端末の境界を定義します。
だから我々はFOO...
赤の背景があり、BAR
赤の背景がないことがわかります。
コマンドを再実行すると、次の結果が表示されます。
|FOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|
|=================================|
|OOOOOOOOOOOOOO BAR |
|============== ===============|
| |
その後もラインが赤くなりますがBAR
…なぜかはわかりませんね。どんなアイデアがありますか?
答え1
Mac OS XのiTerm2は、カラーテキストが利用可能な列をバイパスした場合でもこれを行います。 1つの回避策は、作成してBAR
行末まで消去することです。CSI Ps K Erase in Line (EL)
制御シーケンス、例えば
$ perl -e 'print "\e[41m".("a"x120)."\e[0mBAR\e[K"'