Terminal ANSI终端-重写输出
我正在开发一个新工具,它可以在终端上重写多行,但不使用ncurses。到目前为止,它似乎工作得很好-直到我发现了我在这里要问的问题 我没有找到删除最后30行的方法,如果我的终端一次只能显示20行,那么最后10行无法修改。因此,每次重新绘制我的状态栏时,它都会再生成10行输出。如果我使用konsole的卷轴,它看起来就像一团乱 问题的细节 当我在终端(konsole、xterm等)上运行./demo2时,所有东西都可以放在可视区域内(我在xserver上获得了相当大的屏幕和分辨率),所有东西都按照预期工作,请参见下面的屏幕截图 但是,如果我收缩konsole,动态重写区域的一部分(它以--------------------开头)将不再被删除,因为终端由于未知原因似乎无法到达它 说: 如果光标已位于屏幕边缘,则此操作无效 这正是我所注意到的,使用这些函数是无法做到的。你知道我能做些什么来解决这个问题吗 我尝试了其他各种终端逃逸序列,但都没有成功。我想做的就是重写终端上当前显示的内容的缓冲区 请注意:我知道ncurses,但我希望在不使用它的情况下使用此功能。 理想情况下:DOM终端 像编辑DOM树一样编辑终端输出会很酷。这样我就可以像状态小部件一样更新单个元素。然后,我可以为单个元素设置ID,并且只更新这些元素,而不必在之前或之后触摸其他元素——理想情况下不会丢失用户的选择(用鼠标进行)。也许TMUX是我想要的,但在看了之后,我不知道如何让它工作 这将在终端上重新实现X-widget风格的渲染 想法欢迎!;-) 请参阅我的项目[demo2.cpp],网址为:Terminal ANSI终端-重写输出,terminal,tmux,Terminal,Tmux,我正在开发一个新工具,它可以在终端上重写多行,但不使用ncurses。到目前为止,它似乎工作得很好-直到我发现了我在这里要问的问题 我没有找到删除最后30行的方法,如果我的终端一次只能显示20行,那么最后10行无法修改。因此,每次重新绘制我的状态栏时,它都会再生成10行输出。如果我使用konsole的卷轴,它看起来就像一团乱 问题的细节 当我在终端(konsole、xterm等)上运行./demo2时,所有东西都可以放在可视区域内(我在xserver上获得了相当大的屏幕和分辨率),所有东西都按照
CSI n A CUU – Cursor Up Moves the cursor n (default 1) cells
CSI n B CUD – Cursor Down
CSI n C CUF – Cursor Forward
CSI n D CUB – Cursor Back