像 vi 或 man 或任何其他程序这样的程序如何用程序自己的内容替换终端内容,然后在退出这些程序后它们会带回旧的终端内容?
Vi 翻转到终端支持的备用屏幕缓冲区。这是通过使用转义序列来实现的。看这个链接 http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#The%20Alternate%20Screen%20Buffer了解完整详情。
这些术语的 termcap 条目是进入全屏模式的“ti”和退出全屏模式的“te”。
正如 @Celada 下面指出的,硬编码 xterm 转义序列不是一个好主意™,因为序列根据 $TERM 的不同而变化,例如:
xterm-color
ti: <Esc> 7 <Esc> [ ? 47 h
te: <Esc> [ 2 J <Esc> [ ? 4 7 l <Esc> 8
xterm-256color
ti: <Esc> [ ? 1 0 4 9 h
te: <Esc> [ ? 1 0 4 9 l
另一方面,如今 xterm 支持在非 xterm 终端中非常广泛。仅支持 xterm 不太可能导致问题,除非用户使用外来或过时的 $TERM 设置。资料来源:我支持这样做的产品。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)