使用屏幕命令后,Vi 缓冲区内容保留在屏幕上

使用屏幕命令后,Vi 缓冲区内容保留在屏幕上

在外壳终端中,

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在 terminfotitetermcap 中)。

xterm 程序(与其他可能模拟 xterm 的程序不同)有一个 X 资源设置titeInhibit(以 termcap 功能命名),告诉它禁止切换到备用屏幕或从备用屏幕切换。但是,您很可能能够通过选择(或修改)terminfo 描述来控制它,以便它根据您的需要进行切换。

有关更多信息,请参阅 xterm 常见问题解答为什么运行 vi 时屏幕不清除?

相关内容