Comment remplacer le tampon d'écran vim par l'activité bash précédente après avoir quitté?

14

J'essaie de savoir ce qu'est une fonctionnalité bash (ou vim). Voici le scénario. Je suis dans un terminal bash, puis éditez quelque chose avec vim, puis revenez à bash. Dans certains terminaux, l'écran de session vim disparaît pour montrer l'activité précédente du shell bash (c'est ce que je veux?).

Dans d'autres, le tampon d'écran de la session vim reste (cachant l'ancienne activité du shell bash). Je devrai soit vider l'écran, soit attendre que mon activité bash pousse ce tampon de session vim hors de l'écran.

Comment puis-je contrôler ce comportement pour remplacer le tampon de session vim par l'activité bash précédente?

Merci Tim

Communauté
la source

Réponses:

10

Vim envoie t_tiet t_ksau terminal lorsqu'une session est lancée t_teet t_kelorsqu'elle se termine. Les séquences t_tiet t_teentraînent le terminal à basculer vers son écran alternatif.

Dans votre ~/.vimrcfichier, vous pouvez vimlaisser le document à l'écran à sa sortie en incluant cette ligne:

set t_ti=""

si vous avez une ligne similaire à celle-ci, sa suppression devrait faire apparaître le contenu du terminal précédent lorsque vous quittez vim.

En pause jusqu'à nouvel ordre.
la source
4

Une cause de ce problème peut être en utilisant le programme screen. Je trouve que lorsque je suis en screensession, vim ne peut pas retourner l'état du terminal.

Je ne sais pas si c'est spécifique à l'écran ou au combo écran / vim dans Ubuntu 15.10. Même cause que celle décrite ci-dessus, j'imagine qu'elle screena une terminaison différente.

teknopaul
la source
2
L'ajout altscreen ondans le fichier ~ / .screenrc résout le problème d'écran.
BartBiczBoży
3

Ajoutez simplement une ligne à votre ~/.bash_profilefichier pour exporter TERM en tant que xterm à chaque connexion. Procédez comme suit;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

La prochaine fois que vous vous connecterez, votre problème sera résolu, et si vous ne voulez pas vous reconnecter, vous pouvez faire l'une des ...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile
ekerner
la source
1
n'est-ce pas export $TERM?
chrsblck
1
@chrsblck: Non, car exportexporte le nom (par exemple TERMdans ce cas) en tant que variable d'environnement plutôt que variable locale. Si vous l'utilisiez export $TERMdans cet exemple, la $TERMvar se résoudrait et xtermvous définiriez la var env $xterm, qui n'est probablement pas définie. Bonne question cependant, ça me semble toujours mal aussi.
ekerner
2

Tim. Les deux réponses ci-dessus sont correctes. Vim bascule le terminal sur un "écran alternatif" si la capacité de le faire est définie dans l'entrée termcap pour $ TERM.

Vous dites "dans certains terminaux (... ça marche bien ...)" et "dans d'autres (... ça marche mal ...)"

Utilisez-vous exactement le même émulateur de terminal pour tous ces terminaux?

Par exemple, sur ma boîte Linux domestique, j'ai gnome-terminal, xterm, Konsole, yakuake, et probablement quelques autres que j'ai oubliés, ainsi que les "terminaux virtuels" associés au ctrl-alt-F1 ... ctrl-alt-F6 ou plus. La plupart d'entre eux peuvent fonctionner avec l'entrée "standard" de capuchon pour "xterm" - à l'exception des terminaux virtuels qui ont une définition de terminal nommée "linux".

Vérifiez l'émulateur de terminal lui-même et la valeur de $ TERM sur les terminaux qui fonctionnent et sur ceux qui ne fonctionnent pas, pour voir ce qui est différent. De plus, si vous êtes parfois connecté en tant qu'utilisateur différent, cela pourrait être au cœur du problème - puisque chaque utilisateur a son propre .bashrc, divers paramètres peuvent différer d'un utilisateur à l'autre.

J'espère que cela pourra aider!
-pbr

pbr
la source
1

Cela a à voir avec votre terminal et les paramètres de votre machine traitant des informations sur le terminal. Une solution portable consiste à utiliser GNU Screen. Ouvrez une fenêtre pour Vim et une autre pour Bash, séparant ainsi les deux sessions. Si vous utilisez un terminal graphique tel que xterm sur X11, Gnome Terminal sur Gnome ou Terminal.app sur OS X, vous pouvez ouvrir une nouvelle fenêtre ou un nouvel onglet pour obtenir le même effet.

wilhelmtell
la source