我的问题很简单,但我发现很难轻松地构建/解释它。
我用不同的帐户登录到几个 Unix 机器。在 vim 中编辑文本文件时,我看到user1
和有两个不同的东西user2
用户1
当我输入 时vim filename
,vim 打开并编辑该文件。当我关闭它时,文件中的完整文本消失了,并且我看到了先前存在的终端命令/输出。
用户2
当我输入 时vim filename
,vim 打开并编辑该文件。当我关闭它时,我所在时显示屏上存在的文件部分vim
仍然显示在显示屏上,并且所有先前的终端显示都会向上滚动。即使文件只有 1 行,退出 vim 后,显示屏也会显示第一行,其余所有内容,~
我会在屏幕底部看到命令提示符。
细节
$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)
我比较了vimrc
两个用户的文件,并且我知道所有设置,但没有找到与此行为相关的任何设置/配置。
此行为与 shell 配置有关吗?我如何设置这些东西,以便获得user1
场景中所示的行为?
我无法轻松描述这一点,也发现很难用谷歌搜索,因为我不知道用什么关键字来寻找这种行为。如果我需要进一步详细说明,请告诉我。
答案1
造成这种行为的原因之一是每个用户的终端设置。
例如:
- 用户 1 正在使用 TERM=xterm,在这种情况下,当您退出 vim 时,它将清除终端。
- 用户 2 正在使用 TERM=VT100,在这种情况下,当您退出 vim 时,它不会清除终端。
检查 user1 使用的终端echo $TERM
并为 user2 设置相同的终端。对于bash:
术语=xterm;出口期限
答案2
这种行为是唯一让我远离使用的原因screen
。它使用“screen”终端并将其更改为“xterm”没有帮助。
altscreen on
在 ~/.screenrc 中添加选项解决了这个问题。从屏幕手册:
altscreen on|off
如果设置为打开,则在虚拟终端中启用“备用屏幕”支持,就像在 xterm 中一样。初始设置为“关闭”。
答案3
我已经尝试了所有这些选项,但结果不是我所期望的。!clear
将清除整个屏幕并且不会留下早期的 bash 命令。
简单而正确的解决方案是将终端类型字符串设置为,xterm
并将终端速度设置38400,38400
为连接->数据下腻子设置中的终端详细信息。
保存设置,然后就可以开始了。
答案4
就我而言,两台机器上的 TERM 设置相同,但其中一台机器上的 vim 设置t_te
与系统范围的 vimrc 的设置不同。
解决方案可以在这里找到:https://vi.stackexchange.com/questions/432/prevent-vim-from-clearing-the-terminal-after-exit
即,就:set t_te=
在你的~/.vimrc
.