2016-10-02 241 views
1

我見過終端應用程序,例如vim,它們在使用時充滿整個屏幕,然後在退出時完全消失,即它們不會簡單地打印到當前終端的「space 「:使用整個終端窗口的終端應用程序

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

我想知道如何在C#中,我可以做到這一點。

回答

0

該程序使用替代屏幕功能的終端(最初xterm,但其他)。

vim正在使用終端描述,其中包括用於開始和結束使用光標尋址的轉義序列。大多數情況下(對於xterm和模擬器)切換到備用屏幕/從備用屏幕切換,保存/恢復正常屏幕中的光標位置。並非所有的終端描述都使用該功能。

該功能的歷史記錄在xterm FAQ Why doesn't the screen clear when running vi?中給出。本來這是(在terminfo的格式)

smcup=\E7\E[?47h, rmcup=\E[2J\E[?47l\E8, 

(其中\E是ASCII轉義字符\033),以及modern version

smcup=\E7\E[?1049h, rmcup=\E[?1049l 

參考MSDN,這可能會爲\E7\E[?47h工作:

System.Console.Write("\u001b7\u001b[?47h") 

\E變成\u001b。同樣,對於\E[2J\E[?47l\E8,你可以寫

System.Console.Write("\u001b[2J\u001b[?47l\u001b8") 

延伸閱讀:

+0

我怎樣才能使用備用屏幕在C# ? – theonlygusti

+0

通過將轉義序列寫入終端... –

+0

什麼是轉義序列?你沒有提到它。 – theonlygusti