诸如vi或man的程序或任何其他程序如何用该程序自己的内容替换终端内容,然后在退出这些程序后将其带回旧的终端内容?
Vi切换到终端支持的备用屏幕缓冲区。这是通过使用转义序列来实现的。有关完整的详细信息,请参见此链接。
这些的termcap条目为“ ti”输入,而为“ te”退出全屏模式。
正如@Celada在下面指出的那样,对xterm转义序列进行硬编码不是一个好主意,因为该序列根据$ TERM而有所不同,例如:
xterm-颜色 ti:<Esc> 7 <Esc> [吗?47小时 te:<Esc> [2 J <Esc> [?4 7 l <Esc> 8 xterm-256color ti:<Esc> [?1 0 4 9小时 te:<Esc> [?1 0 4 9升
另一方面,如今,xterm支持在非xterm终端中非常广泛。仅支持xterm不太可能引起问题,除非用户使用$ TERM设置异常或过时。资料来源:我支持执行此操作的产品。