退出后,如何用之前的 bash 活动替换 vim 屏幕缓冲区?

退出后,如何用之前的 bash 活动替换 vim 屏幕缓冲区?

我正在尝试找出 bash(或 vim)功能是什么。情况如下。我在 bash 终端中,然后使用 vim 编辑一些内容,然后退出回到 bash。在某些终端中,vim 会话屏幕会消失,显示之前的 bash shell 活动(这是我想要的?)。

在其他情况下,vim 会话屏幕缓冲​​区会保留(隐藏旧的 bash shell 活动)。我必须清除屏幕,或者等到我的 bash 活动将 vim 会话缓冲区推出屏幕。

我如何控制此行为以用以前的 bash 活动替换 vim 会话缓冲区?

谢谢蒂姆

答案1

当会话开始时,Vim 会向终端发送t_ti和,当会话结束时,Vim 会向终端发送 和 。和序列会导致终端切换到其备用屏幕。t_kst_tet_ket_tit_te

在您的~/.vimrc文件中,您可以vim通过包含以下行来使文档退出时留在屏幕上:

set t_ti=""

如果有类似的行,删除它应该会使退出时出现以前的终端内容vim

答案2

~/.bash_profile每次登录时,只需在文件中添加一行即可将 TERM 导出为 xterm。请按如下方式操作;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

现在,您下次登录时,您的问题将得到解决,如果您不想重新登录,您可以执行以下其中之一...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

答案3

导致此问题的原因可能是使用该程序screen。我发现当我处于screen会话中时,vim 无法返回终端状态。

不确定它是否特定于屏幕或 Ubuntu 15.10 中的屏幕/vim 组合。与上面描述的原因相同,我猜screen有不同的 termcap。

答案4

Tim。以上两个答案都是正确的。如果在 $TERM 的 termcap 条目中定义了此功能,Vim 会将终端切换到“备用屏幕”。

您说“在某些终端(...它运行正常...)”和“在其他终端(...它运行不正确...)”

您是否对所有这些终端运行完全相同的终端仿真器?

例如,在我家的 Linux 机器上,我有 gnome-terminal、xterm、Konsole、yakuake,可能还有一些我忘记了的,还有与 ctrl-alt-F1...ctrl-alt-F6 等相关的“虚拟终端”。其中大多数都可以与“xterm”的“标准”termcap 条目一起使用 - 除了具有名为“linux”的终端定义的虚拟终端。

检查终端仿真器本身以及正常工作的终端和不正常工作的终端上的 $TERM 值,看看有什么不同。此外,如果您有时以不同的用户身份登录,这可能是问题的核心 - 因为每个用户都有自己的 .bashrc,因此各种设置可能因用户而异。

希望有帮助!
-pbr

相关内容