一尘不染

vi退出终端后如何恢复终端内容?

linux

诸如vi或man的程序或任何其他程序如何用该程序自己的内容替换终端内容,然后在退出这些程序后将其带回旧的终端内容?


阅读 349

收藏
2020-06-02

共1个答案

一尘不染

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设置异常或过时。资料来源:我支持执行此操作的产品。

2020-06-02