I'm trying to find out what a bash (or vim) feature is. Here's the scenario. I'm in a bash terminal, then edit something with vim, then exit back to bash. In some terminals, the vim session screen disappears to show the previous bash shell activity ( this is what I want? ).

In others, the vim session screen buffer remains (hiding old bash shell activity). I'll have to either clear the screen, or wait until my bash activity pushes that vim session buffer out of the screen.

How can I control this behaviour to replace vim session buffer with previous bash activity?

Thanks Tim

link|improve this question
Belongs on superuser.com. – Philipp Oct 3 '10 at 19:24
feedback

migrated from stackoverflow.com Oct 5 '10 at 12:31

This question came from our site for professional and enthusiast programmers.

3 Answers

Vim sends t_ti and t_ks to the terminal when a session is started and t_te and t_ke when it ends. The t_ti and t_te sequences cause the terminal to switch to its alternate screen.

In your ~/.vimrc file you can make vim leave the document on screen when it exits by including this line:

set t_ti=""

if you have a line similar to that, removing it should make the previous terminal contents appear when you exit vim.

link|improve this answer
feedback

This has to do with your terminal and your machine's settings dealing with the terminal info. One portable solution is to use GNU Screen. Open one window for Vim and another for Bash, thereby separating the two sessions. If you are using a graphical terminal such as xterm on X11, Gnome Terminal on Gnome or Terminal.app on OS X then you can open a new window or tab to gain the same effect.

link|improve this answer
feedback

Tim. Both of the above answers are correct. Vim switches the terminal to an "alternate screen" if the capability to do that is defined in the termcap entry for $TERM.

You say "in some terminals (...it works right...)" and "in others (...it works wrong...)"

Are you running the exact same terminal emulator for all of those terminals?

For example, on my home linux box, I have gnome-terminal, xterm, Konsole, yakuake, and probably a few more I've forgotten about, along with the "virtual terminals" associated with the ctrl-alt-F1...ctrl-alt-F6 or so. Most of these can work with the "standard" termcap entry for "xterm" - except the virtual terminals which have a terminal definition named "linux".

Check the terminal emulator itself and the value of $TERM on terminals that work and on ones that don't, to see what's different. Also, if you're logged in as a different user sometimes, that could be at the heart of the issue - since each user has his own .bashrc various settings can differ from user to user.

Hope that helps!
-pbr

link|improve this answer
feedback

Your Answer

 
or
required, but never shown