Empêcher Vim de vider le terminal après la sortie

15

Si je fais:

$ less file

Et appuyez qpour quitter less, je vois toujours le même texte que j'avais à l'écran quand il lessétait encore en cours d'exécution.

Cependant, si je le fais

$ vim file

Et :q, mon terminal est masqué ...

Captures d'écran de mon terminal après avoir quitté lesset vim:

entrez la description de l'image ici entrez la description de l'image ici

Puis-je en quelque sorte empêcher cela? Ce n'est que sur mon système Linux. Mon système FreeBSD fonctionne réellement comme prévu (en utilisant le même logiciel / paramètres tout autour, TERMc'est xterm-colorpour les deux, vim -u NONEça ne fait aucune différence).

Exemple de ce que j'aimerais avoir:

entrez la description de l'image ici

Martin Tournoij
la source

Réponses:

18

Par défaut, VIM, à la fin, envoie la chaîne configurée avec l'option t_teau terminal d'hébergement pour lui dire d'effacer l'écran. Pour l'éviter, il suffit :set t_te=de ne rien envoyer au terminal et d'éviter l'effacement de l'écran. Consultez le :help termformulaire pour plus d'informations sur les capacités du terminal.

toro2k
la source
2

Comme vous utilisez un xterm, vous pouvez utiliser ses tampons d'écran principal et alternatif pour l'échange d'écran, comme dans cette section de mon .vimrc

if &term == "linux"
    set t_ti=^[[?1049h
    set t_te=^[[?1049l
endif                                                       

Remarque: ^[n'est pas un texte littéral, c'est le caractère d'échappement, utilisez Ctrl+ vsuivi de Escpour l'insérer.

Ces commandes vim ajoutent les commandes pertinentes qui peuvent être manquantes dans l'entrée linux terminfo. Plus d'infos sur

:help xterm-screens
jalanb
la source
Hm, ne semble toujours rien faire? Cela fonctionne comme si j'utilisais set t_te=, mais c'est censé faire plus, je pense?
Martin Tournoij