例如,如果您在 powershell 会话中执行此命令
write-host 'hello' -ForegroundColor 'red' -BackgroundColor 'cyan'
调整窗口大小会导致背景颜色填充整行:
我已经在 Windows Terminal、Windows Console 和 Fluent Terminal 中对此进行了测试,它们都表现出这种行为。(我猜可能有一个虚拟终端序列/ANSI 代码来解决这个问题,但我不知道这可能是什么)。
那么,我们怎样才能防止这种情况发生呢?
λ $PSVersionTable
Name Value
---- -----
PSVersion 7.1.1
PSEdition Core
GitCommitId 7.1.1
OS Microsoft Windows 10.0.19041
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
编辑:作为测试,我尝试了以下方法:
write-host 'hello' -ForegroundColor 'red' -BackgroundColor 'cyan' -NoNewline; write-host 'world' -BackgroundColor black
当然会显示“HelloWorld”,“World”没有背景颜色,或者更准确地说与默认颜色相同(黑色)。
如果我们再向前迈出一步并在背景颜色设置为黑色之后打印一个额外的空间,那么这不会达到预期的响应,即在调整大小发生后,我们又会看到背景颜色为青色填充整行。
所以我们需要某种不可见的字符来阻止背景颜色的溢出或我目前不知道的完全不同的方法。