使用整个终端窗口的终端应用程序

时间:2016-10-02 18:14:10

标签: c# terminal console

我见过终端应用程序,比如vim,当用它们填满整个屏幕然后在它们退出时完全消失,即它们不会简单地打印到当前终端“空间”中:

Vim, when opened, takes up the whole terminal window, and when closed prints nothing else in the terminal.

我想知道在C#中我能做到这一点。

1 个答案:

答案 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

进一步阅读: