我使用i3
作为wm
,因此当我切换终端尺寸时,所有文字都保持与之前尺寸相同的位置。
当尝试做一些像pip install --upgrade pip
这样的事情时,它会非常痛苦,它会在每一行上打印新的响应,而不是刷新。
答案 0 :(得分:0)
通常不可能使终端在重新调整尺寸时重新格式化已打印的输出,而不是包裹太长的线。特别是在某种程度上,如果终端开始使用新的输出(拉伸/缩小旧的进度条,重新组织ls
的输出列等),输出看起来就像它一样。终端无法获得所需的信息。
终端的内容基本上只是从左到右,从上到下打印的一系列字符。新行通过显式的换行符字符(\n
)或写入多于一行的内容。
没有用于右对齐,居中对齐或对齐对齐的格式化选项。任何看起来都在进行这些对齐的东西都是由产生输出的程序完成的(通常是通过获取当前的终端宽度然后将光标放在适当的位置或者只是通过打印一条全宽的线来完成终端)。在您的第二个屏幕截图中,您可以看到pacman
如何打印当前进度条,具体取决于终端的当前宽度。您还可以看到它将如何缩短某些名称,以便为大小和速度信息留出足够的空间。终端仿真器无法恢复丢失的部分,pacman
(以及大多数其他程序)不会返回终端缓冲区以修改其先前的输出以适应新的窗口大小。通常,程序只是在底部添加新输出。进度条通常(大部分时间?总是?)通过转到当前行的开头(打印特殊字符\b
来完成)并一次又一次地用更新的信息覆盖该行来完成。
当然,有些程序实际上可以(或成功地假装它们可以)处理所有输出的窗口重新调整大小。这些程序通常接管整个终端窗口(vim
,less
,elinks
,...),并根据需要自行重新格式化其输出。如果他们有所需的信息,那就是。在您的第一个屏幕截图中,less
没有重新格式化文本的必要信息。