带有转义码的终端内动画

带有转义码的终端内动画

输入文件:Brainfuck 中河内塔的输出(某些代码点可能无法在您的浏览器中正确呈现)。该文件基本上使用转义码(更具体地说^[[m;nH)重写行。

运行命令(您可能需要执行sudo apt-get install pv或等效操作)

cat hanoi.b.out |  pv -l -L 10 -q

给出输出像

在此输入图像描述

如果窗户尺寸足够大。

如果没有,输出看起来像

在此输入图像描述

图像开始“向下滚动”的位置。

自然,这引出了一个问题:为什么当窗口尺寸太小时会发生这种(错误)行为?

答案1

并非所有输出都是游标寻址的。其中一些是换行符,这将(当光标恰好位于底行时)导致终端向上滚动。这是使用的可见渲染unmap输出的开头:查找\n(换行符是“line-feeds”);

\E[H
\E[2J
\E[2;27HTowers of Hanoi in Brainf*ck
\E[3;15HWritten by Clifford Wolf <http://www.clifford.at/bfcpu/>
\E[14;43H-----------------------------------
\E[24;23H-----------------------------------
\E[14;3H-----------------------------------
\E[13;3HxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
\E[12;5HxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
\E[11;7HxXXXXXXXXXXXXXXXXXXXXXXXXXx
\E[10;9HxXXXXXXXXXXXXXXXXXXXXXx
\E[9;11HxXXXXXXXXXXXXXXXXXx
\E[8;13HxXXXXXXXXXXXXXx
\E[7;15HxXXXXXXXXXx
\E[6;17HxXXXXXx
\E[5;19HxXx
\E[5;19H   
\E[13;59HxXx
\n
\E[1;1H
\E[6;17H       
\E[23;37HxXXXXXx
\n
\E[1;1H
\E[13;59H   
\E[22;39HxXx
\n
\E[1;1H
\E[7;15H           
\E[13;55HxXXXXXXXXXx

当您使用较小的屏幕尺寸时,不会导致滚动的换行更有可能位于底行,因此您会看到它向上滚动。

相关内容