2014-07-14 153 views
2

所以我知道,通過控制檯字符,您可以將光標返回到當前行的開頭(\r)或只是一個字符(\b)進行覆蓋。我想知道的是我用控制字符覆蓋多行。使用控制檯字符清除多個控制檯行

我有網點,網點,打印到控制檯:

. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 

然後再回到第一個字符和重繪

. . . . . . . . 
. . . 0 . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 
. . . . . . . . 

不知道這會是哪種語言,這就是爲什麼我更喜歡使用字符的解決方案。

+0

一種選擇是使用_curses_庫,它可以在終端上爲您提供全屏窗口。有C,Python,Java和其他可能的語言的curses庫版本。 – tdelaney

+0

查看[ASCII控制代碼列表](http://en.wikipedia.org/wiki/ASCII#ASCII_control_code_chart),我沒有看到任何可能用於將光標向上移動的行。 – Kevin

回答

0

注意,您可以從一個控制檯輸出單元想到仿真水平是非常有限的(下面所有的只是,如果你不渲染一個Swing的JPanel或類似輸出自己適用)。通常,您可以期望Ctrl-H退格,而Ctrl-M將光標返回到行的開頭。除此之外的任何東西都會設置附加要求。

從歷史上看,這是通過發送ANSI轉義序列(物理VT100終端的一個近親)來完成的,後者被解釋爲移動光標,清除顯示器的部分和開關顏色。在輸出設備中,您需要做類似的操作。對於Windows中的CMD.EXE,請參閱How to make win32 console recognize ANSI/VT100 escape sequences?以獲取建議。 Linux和OS X終端仿真器支持這一點。

然後,您可以自己生成轉義序列 - 這對於簡單的需求來說相對容易 - 或者委託給curses/ncurses庫來實現您所需要的。

+0

好的,我正在嘗試不使用curses,它是爲了我想要的矯枉過正,我只是用一條線 –