我见过终端应用程序,比如vim,当用它们填满整个屏幕然后在它们退出时完全消失,即它们不会简单地打印到当前终端“空间”中:
我想知道在C#中我能做到这一点。
答案 0 :(得分:0)
该程序使用终端的备用屏幕功能(最初是xterm,但其他人)。
vim正在使用终端描述,其中包括用于开始和结束游标寻址使用的转义序列。主要是(对于xterm和模仿者)切换到/从备用屏幕切换,保存/恢复正常屏幕中的光标位置。并非所有终端描述都使用该功能。
该功能的历史记录在xterm FAQ Why doesn't the screen clear when running vi?中给出。最初这是(以terminfo格式)
click.delegate="myShowVar = !myShowVar"
(其中smcup=\E7\E[?47h, rmcup=\E[2J\E[?47l\E8,
是ASCII转义字符\E
),而modern version是
\033
参考MSDN,这可能适用于 smcup=\E7\E[?1049h, rmcup=\E[?1049l
:
\E7\E[?47h
System.Console.Write("\u001b7\u001b[?47h")
变为 \E
。同样,对于 \u001b
,您可以编写
\E[2J\E[?47l\E8
进一步阅读: