vi自动调整到屏幕大小调整的程序(例如)响应SIGWINCH信号,并使用系统调用获取系统有关屏幕大小的信息.请参阅例如在c ++中获取终端窗口的宽度/高度?.顺便说一句,虽然广泛实施,但似乎没有在POSIX中记录signal.h.
如果不考虑SIGWINCH,程序可以向终端询问其屏幕大小.该resize程序是这种情况,通过发送终端控制序列
关于嵌入在其输出中的ANSI控制序列的ls和vi(以及其他程序)的行为取决于程序的设计.他们可能会使用该isatty函数检测其输出重定向到文件,并根据输出是输出到终端还是文件来执行不同的操作.