在外壳终端中,
echo $TERM --- prints xterm
现在我vi somedoc
这样做了exit
,vi 内容从 shell 屏幕上消失,并且 shell 之前运行的命令可见。到目前为止,一切都很好。
现在我运行screen ssh localhost
并执行Ctrl-A, c
将 ssh 会话置于后台的操作。
echo $TERM --- prints screen
现在我vi somedoc
这样做了exit
,vi 缓冲区的内容占据了整个屏幕,并且 bash shell 提示符转到屏幕的最后一行。这使得终端不再像我clear
在进入和退出 vim 后需要做的那样可用。
我尝试这样做,export TERM=xterm
看看退出 vi 是否会清除终端的缓冲区内容,但没有效果
答案1
这是 xterm 的一项功能,称为备用屏幕。应用程序是否使用备用屏幕由转义序列控制。通常这些与终端的初始化和重置序列结合在一起(smcup
以及rmcup
在 terminfoti
和te
termcap 中)。
xterm 程序(与其他可能模拟 xterm 的程序不同)有一个 X 资源设置titeInhibit
(以 termcap 功能命名),告诉它禁止切换到备用屏幕或从备用屏幕切换。但是,您很可能能够通过选择(或修改)terminfo 描述来控制它,以便它根据您的需要进行切换。
有关更多信息,请参阅 xterm 常见问题解答为什么运行 vi 时屏幕不清除?