我注意到终端光标从终端顶部开始,随着执行更多命令而缓慢向下移动,直到最终落在底部,无论命令数量如何。过了一段时间后,运行清除会将其摇回顶部。这种行为似乎与我系统上的所有终端一致。
这种行为有历史吗?是否有任何行为不同的终端模拟器?
我认为为了更好的人体工程学设计还有待争论。例如,为什么不将光标置于顶部以减少颈部向下伸展?或者为什么不使输入光标静态,这样用户就不需要在整个命令执行过程中跟踪光标移动?
答案1
这历史就是它早期的计算机 I/O 设备是电传打字机。这些是可以电气连接的打字机,因此按下的按键不仅会在纸上打印,还会将信息发送到另一个设备(不一定是计算机),而其他设备可以指示打字机在纸上打印字符,而无需按键。
这会产生许多后果,包括:
- 输入和输出按照产生的顺序组合在同一“记录”介质上;
- 在某些情况下,输入设备可以生成自己的记录(请参阅
stty echo
); - 与这个问题最相关的是,由于我们现在使用的系统主要基于美国和西欧开发的实践,输出从一张纸的左上角或使用的任何表示形式开始。
添加屏幕时(不一定是在代替纸),它们被用作无限滚动的扇形折叠纸上的视口。旧习惯很难改掉,这一点在终端模拟器中一直延续到今天(根据定义,这就是倒退)。
其他输入模型确实存在,包括玻璃终端 - 例如,IBM 3270终端是面向块的,通常与管理全屏信息而不是滚动信息的应用程序一起使用。
shell 并不是与计算机交互的唯一方式,有些程序用其他模型来补充它。一个例子是“正统文件管理器”,例如午夜指挥官(灵感来自诺顿指挥官,在 DOS PC 上);这些通常在屏幕底部的固定位置有一个命令行提示符,并提供对单独视图中的输出的访问:
答案2
相信它就是最自然的方式。至少对于从左到右、从上到下阅读的人来说是这样。
终端可以被视为一本永恒的书/日志。当然可以反过来安排,但这会引起一些问题。一是经常使用流。人们还需要不断地重新安排缓冲区/视图。
多行输出的一个问题是输出的结尾可能位于视图下方,因此在命令之后必须向下滚动才能看到。当然,人们可能会提出相反的观点——现在人们必须滚动才能看到顶部,但相信平均而言人们对最后的输出更感兴趣。
焦点位于底部,因为那是最后一个操作所在的位置。
由于命令行位于顶部,人们还需要不断地将焦点从上转移到下。说你愿意tail -n 10 some_file
。您将阅读这 10 行,然后将焦点移回顶部。
间隔打印信息的命令。应该怎样做呢?打印 - 阅读该部分。向上移动焦点,向下阅读到上一次打印开始的位置,向上移动焦点,重复。
相信这样比从上到下阅读更容易漏掉一些东西。
或者说执行一个命令会生成 10k 行。是否应该向下滚动以查看最终结果?或者说你编译一个程序。输出应该如何安排?
有一些程序使用静态“命令行”,例如终端 IRC 客户端(irssi、weechat 等)。这里(通常)在底部有命令行,并在其上方从上到下记录。
实际上,当屏幕被填满时,终端是相同的,尽管终端不受输入行高度的限制。
事情就是这样
- 迄今为止最简单的方法(实施方面),
- 对于大多数人来说(我相信)这是阅读信息最自然的方式。