最新的Windows 10更新中,conhost.exe已经支持ANSI转义序列。
我已经确认cmd.exe正确地捕获了转义序列,所以我已经进行了必要的更新。特别地,我尝试输入prompt $e[?25l
隐藏光标,然后输入 prompt $e[?25h
再次显示光标。
但是,如果我启动一个Python解释器,然后执行以下操作:
>>> import sys
>>> sys.stdout.write("\033[?25l")
嗯,光标没有隐藏。我该如何设置才能使控制台正确接收Python的转义序列?
ENABLE_PROCESSED_OUTPUT|ENABLE_WRAP_AT_EOL_OUTPUT|ENABLE_VIRTUAL_TERMINAL_PROCESSING
,它等同于0x0001|0x0002|0x0004
,它等于7。Python无法包含定义这些标志的C头文件,因此我只是用它们最终评估为7的数字进行了替换。前两个标志默认为开启状态,启用您所期望的正常控制台输出处理,第三个标志是启用ANSI转义序列处理的标志,默认情况下未启用。 - Ross Ridge