我正在处理使用IPython的嵌入式shelling功能的脚本,并且作为一项要求,它必须将stdin / stdout中的所有数据记录到文件中。出于这个原因,我决定为他们写封皮;然而,在切换出流之后,我的嵌入式IPython shell失去了它的自动完成和历史记录功能,当我按下箭头按钮时输出这样的东西:
In [1]: ^[[A^[[B^[[A^[[C...
我猜测包装器会以某种方式阻止IPython识别用于向上,向下,向左和向右箭头的ANSI转义序列(ESC[#A
,ESC[#B
,{{1} },ESC[#C
)。
这是一个演示我的问题的代码:
ESC[#D
关于如何解决这个问题的任何想法?
提前致谢。
答案 0 :(得分:0)
@ Carreau(IPython核心开发人员)在Github对此问题的回复:
问题是特别是提示工具包stdout更多 而不是一个流,因为你在屏幕上绘制/擦除/重绘,和 因为它使用eventloop和async完成,你不能考虑 stdin / out / err足以了解当前的状态。
所以你(可能)需要挂钩到prompt_toolkit和 覆盖vt100输入/输出和/或windows窗口。
我们最有可能需要额外的钩子才能在IPython中设置它 启动。