My question is simple, but I am finding it hard to frame/explain it easily.
I log into several Unix boxes with different accounts. I see 2 different things for user1 and user2, while editing text files in vim
user1
When I type vim filename, vim opens and I edit the file. When I close it, the complete text from the file is gone , and I see the Teminals’ command/output that was previously present.
user2
When I type vim filename, vim opens and I edit the file. When I close it, the part of file that was present on the display while I was in vim still shows up at the display, and all the previous Terminal display get’s scrolled up. Even if the file was just 1 line, after exiting vim, the display shows the first line, with rest all the ~ and I see the command prompt at the bottom of screen.
Details
$ 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)
I compared the vimrc files for both users, and I am aware of all the settings, and don’t find any setting/config related to this behavior.
Is this behavior related to shell config ? How do I set the things, so that I get the behavior as shown in user1 scenario?
I am not able to describe this easily, also finding it hard to google, as I don’t to know what keyword to look for such behavior. Let me know, If I should elaborate further.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
One of the reasons for that behaviour will be the setting of the terminal for each user.
For example:
- User1 is using TERM=xterm, in this case when you exit vim it will clear the terminal.
- User2 is using TERM=vt100, in this case when you exit vim it will not clear the terminal.
Check what terminal user1 is using with echo $TERM and set the same for user2.
for bash:
TERM=xterm; export TERM
Method 2
Such behavior was the only thing that kept me away from using screen. It uses “screen” terminal and changing it to “xterm” didn’t help.
Adding altscreen on option in ~/.screenrc solved it. From screen’s manual:
altscreen on|off
If set to on, “alternate screen” support is enabled in virtual terminals, just like in xterm. Initial setting is `off’.
Method 3
I have tried all these options but the result was not the one that I expected. !clear would clear the entire screen and does not leave behind the earlier bash commands.
Simple and correct solution is to set the terminal type string to xterm and terminal speeds to 38400,38400 under Terminal details in putty settings under Connection->Data.
Save the settings and you are good to go.
Method 4
In my case, TERM was set equally on both machines, but on one of them, the vim setting t_te got a different setting from the system wide vimrc.
Solution can be found here: https://vi.stackexchange.com/questions/432/prevent-vim-from-clearing-the-terminal-after-exit
I.e., just :set t_te= in your ~/.vimrc .
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0