我試圖圍繞VT102序列和ncurses這樣的庫如何工作。xterm/vt102序列填充終端窗口,然後按鍵退出,清除屏幕上的任何內容?
舉個例子,當我打開Emacs時,它會填充終端窗口。當我打C-XC-C,程序將退出,我的終端窗口看起來完全像看上去我之前推出的Emacs(即我的光標上面的線是用我自己的zsh歷史,沒有任何的emacs已經呈現emacs
命令)。
作爲一種「hello world」,我寫了一個小小的ruby腳本,打開/dev/tty
,然後爲我的終端中的行編寫\x1B[48;597m\n
(空白行,帶背景色)。該程序然後睡5秒鐘,讓我快樂地盯着一個明亮的橙色屏幕瞬間。然後它退出,離開我的zsh提示符,在它上面有53條明亮的橙色線。
兩個問題:
- 正在寫空行與背景色正確的方法來填充顏色的終端窗口?
- 如何通過發送一些VT102序列到/ dev/tty來完全清除屏幕?
我能送\x1B[2J
,但這種做同樣的事情,當我執行clear
命令,實際只是轉移所有內容的終端窗口,直到我的光標是一個空白的最頂端窗口,而不是將光標留在任何它自然會出現的地方,如果我的程序沒有在屏幕上寫入空白行的負載。
PS:不知道什麼標籤用在這裏,任何人實際上可能被訂閱。
真棒,新的關鍵字,謝謝:)'[?1049h'和'[?1049l'做* *差不多正確的事情,除了光標在屏幕的頂部是右後我出口的位置。我要讀一下你提到的這些擴展。 – d11wtq
模式?1049應該在你設置/重置時保存和恢復光標 - 確保你沒有意外地做光標前/後的任何事情。有關更多控制順序的列表,請參閱http://rtfm.etla.org/xterm/ctlseq.html,有關原始DEC文檔的內容請參閱http://vt100.net/docs/。 – duskwuff
原來我只是半睡半醒,並輸入了'1'而不是'l';)非常感謝,我現在真的開始了,知道我在找什麼! – d11wtq