如何设置bash显示在退出后不显示vim文本?


28

我的问题很简单,但是我很难轻松地对其进行构图/解释。

我用不同的帐户登录了几个Unix框。在vim中编辑文本文件时,我看到了user1和的2种不同的东西user2

用户1

输入时vim filename,vim打开,然后编辑文件。当我关闭它时,文件中的完整文本消失了,我看到了先前存在的Teminals的命令/输出。

用户2

输入时vim filename,vim打开,然后编辑文件。当我关闭它时,在我进入状态时显示在显示器上的文件部分vim仍会显示在显示器上,并且所有以前的Terminal显示器都会向上滚动。即使文件只有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场景中所示的行为?

我无法轻松地描述这一点,也发现很难用Google来搜索,因为我不知道要使用哪种关键字来查找此类行为。让我知道,如果我应该进一步阐述。


user1user2帐户在同一台​​或不同的计算机上吗?
jasonwryan

@jasonwryan在同一台计算机上登录也显示相同的情况。@ warl0ck谢谢你。
mtk

1
如果您想强制执行此行为但保留终端类型,请在.bashrc或.profile中添加一行,并使用别名vi =“ / usr / bin / vi $ *; clear”
Criggie

Answers:


24

该行为的原因之一将是为每个用户设置终端。

例如:

  • User1使用TERM = xterm,在这种情况下,当您退出vim时,它将清除终端。
  • User2使用TERM = vt100,在这种情况下,退出vim不会清除终端。

检查user1使用的终端,echo $TERM并为user2设置相同的终端。对于bash:

TERM = xterm; 出口期限


+1精确/完美的解决方案。谢谢 !!!没想到那是那么容易。您能详细说明一下TERM是什么吗?或指向某些资源链接?我需要明白这一点。仅当我们通过进行连接时,这会影响putty吗?
mtk

您可以在腻子会话中指定终端设置,但用户可以在其环境变量中指定终端设置。TERM将定义您的终端类型,还有一些将具有其他功能,例如xterm支持颜色,并且它将自动更新行和列。如果您使用vt100,则当您调整终端大小时,它将默认为24行乘80列,您会看到它坚持为24x80。检查这个unix.stackexchange.com/questions/43945/…,它可能比我解释得更好。
BitsOfNix

这是终端行为,而不是外壳。终端仿真器设置与用于连接的工具相同。此处详细说明了差异:unix.stackexchange.com/questions/4126/…–
Leonid

@Leonid,不完全是,如果您使用腻子,则可以定义,如果用户没有TERM定义,它将在连接时更新。如果用户定义了它,那么您是对的,无论使用哪种工具在用户环境中占优。
BitsOfNix

只是有关此解决方案的注释:YMMV。它并不总是“ xterm”。在FreeBSD 10上将dwm(动态窗口管理器)与dmenu一起使用我不得不通过使用“ rxvt”来获得场景1来伪造终端。您也可以通过在您的〜/ .vimrc文件中添加“ set term = rxvt”来跳过术语设置。 。
莱德(Ryder)2015年

18

这种行为是使我无法使用的唯一原因screen。它使用“屏幕”终端并将其更改为“ xterm”没有帮助。

altscreen on在〜/ .screenrc中添加选项解决了它。从屏幕的手册中:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.

@Fox OP没有提及他正在使用的术语,因此这可以作为替代答案。无论如何,此页面在搜索屏幕问题时也位于顶部。
BartBiczBoży

2
这成功了!关键字:“ vim退出了视觉制品终端”
Jay Taylor

0

我已经尝试了所有这些选项,但结果却不是我所期望的。!clear将清除整个屏幕,并且不会留下早期的bash命令。

简单正确的解决方案是在“连接”->“数据”下的腻子设置中的“终端详细信息”下将终端类型字符串设置为xterm,将终端速度38400,38400设置为。

保存设置,一切顺利。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.