【发布时间】:2015-08-09 12:15:28
【问题描述】:
当我编写用于命令行的程序时,我注意到存在一些限制。例如,我不能像 tmux 那样在窗口中分隔窗格时绘制 1 像素厚的水平或垂直线。我只能向下移动光标,而不是像 VI 看起来那样向上移动。如果光标在底部,我无法刷新页面顶部的信息。
所以,当像 tmux 和 vi 这样的程序这样做时,我不得不怀疑它们是否是:
每次更新都从上到下绘制屏幕(我认为这不太可能,否则我可以在终端中向上滚动并查看每次重绘)
使用一些在终端中启用图形的库,如 SDL,我也认为这不太可能。
使用一些我不知道的标准系统调用
或者最后
- 利用我完全不知道的 Linux/Unix 的某些功能。
那么,这些程序是如何在看似有限的外壳中生成如此丰富的 UI 的呢?只要答案给了我足够的素材让我在 Google 上狂暴,我就会很高兴。
我还假设这些程序使用一些常用方法来执行这些操作,但如果有误请告诉我。
【问题讨论】:
标签: linux user-interface unix terminal tmux