Comment configurer l'affichage bash pour ne pas afficher le texte vim après la sortie?

28

Ma question est simple, mais j'ai du mal à cadrer / expliquer facilement.

Je me connecte à plusieurs boîtes Unix avec différents comptes. Je vois 2 choses différentes pour user1et user2, tout en éditant des fichiers texte dans vim

user1

Lorsque je tape vim filename, vim s'ouvre et j'édite le fichier. Lorsque je le ferme, le texte complet du fichier a disparu et je vois la commande / sortie des Teminals qui était précédemment présente.

user2

Lorsque je tape vim filename, vim s'ouvre et j'édite le fichier. Lorsque je le ferme, la partie du fichier qui était présente sur l'écran alors que j'étais en vims'affiche toujours à l'écran, et tous les précédents affichages du Terminal défilent. Même si le fichier n'était que d'une ligne, après avoir quitté vim, l'écran affiche la première ligne, avec tout le reste ~et je vois l'invite de commande en bas de l'écran.

Détails

$ 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)

J'ai comparé les vimrcfichiers pour les deux utilisateurs, et je connais tous les paramètres, et je ne trouve aucun paramètre / configuration lié à ce comportement.

Ce comportement est-il lié à la configuration du shell? Comment est-ce que je place les choses, de sorte que j'obtienne le comportement comme montré dans le user1scénario?

Je ne suis pas en mesure de décrire cela facilement, ce qui rend également difficile la recherche sur Google, car je ne sais pas quel mot clé rechercher un tel comportement. Faites-moi savoir, si je devais développer davantage.

mtk
la source
Les comptes user1et sont - ils user2sur des machines identiques ou différentes?
jasonwryan
@jasonwryan La connexion sur la même machine montre également le même scénario. @ warl0ck Merci pour cela.
mtk
1
Si vous vouliez forcer ce comportement mais conserver votre type de terminal, ajoutez une ligne à votre .bashrc ou .profile disant alias vi = "/ usr / bin / vi $ *; clear"
Criggie

Réponses:

24

L'une des raisons de ce comportement sera le paramétrage du terminal pour chaque utilisateur.

Par exemple:

  • L'utilisateur1 utilise TERM = xterm , dans ce cas, lorsque vous quittez vim, il effacera le terminal.
  • L'utilisateur2 utilise TERM = vt100 , dans ce cas, lorsque vous quittez vim, il n'effacera pas le terminal.

Vérifiez avec quel terminal user1 utilise echo $TERMet définissez la même chose pour user2. pour bash:

TERM = xterm; export TERM

BitsOfNix
la source
+1 Solution exacte / parfaite. Merci !!! Je ne pensais pas que c'était aussi simple que ça. Pouvez-vous expliquer ce qu'est un TERM? ou pointer vers un lien de ressource? J'ai besoin de comprendre ça. Cela affecte-t-il uniquement lorsque nous nous connectons via putty?
mtk
Vous pouvez spécifier le paramètre du terminal dans la session putty, mais les utilisateurs peuvent le spécifier sur leurs variables d'environnement. TERM définira votre type de terminal et certains auront plus de fonctionnalités que d'autres, par exemple, xterm prend en charge les couleurs et mettra à jour les lignes et les colonnes automatiquement. Si vous utilisez vt100, il sera par défaut de 24 lignes par 80 colonnes lorsque vous redimensionnerez votre terminal, vous verrez qu'il s'en tient à 24x80. Vérifiez ce unix.stackexchange.com/questions/43945/… , il pourrait expliquer mieux que moi.
BitsOfNix
C'est le comportement du terminal, pas le shell. Les paramètres de l'émulateur de terminal sont les mêmes quel que soit l'outil que vous utilisez pour vous connecter. La différence est expliquée en détails ici: unix.stackexchange.com/questions/4126/…
Leonid
@Leonid, pas exactement, si vous utilisez du mastic, vous pouvez le définir et il se mettra à jour lors de la connexion si l'utilisateur n'a pas défini de TERM. Si l'utilisateur l'a défini, vous avez raison, quel que soit l'outil, il prévaudra sur le paramètre de l'environnement utilisateur.
BitsOfNix
Juste une note sur cette solution: YMMV. Ce n'est pas toujours "xterm". En utilisant dwm (Dynamic Window Manager) avec dmenu sur FreeBSD 10, j'ai dû simuler le terminal en utilisant "rxvt" pour obtenir le scénario 1. Vous pouvez également ignorer le paramètre de terme en ajoutant "set term = rxvt" à votre fichier ~ / .vimrc .
Ryder
18

Un tel comportement était la seule chose qui m'empêchait d'utiliser screen. Il utilise le terminal "screen" et le changer en "xterm" n'a pas aidé.

L'ajout d'une altscreen onoption dans ~ / .screenrc l'a résolu. Depuis le manuel de l'écran:

altscreen on|off

If set to on, "alternate screen" support is enabled in virtual terminals, just like in xterm.  Initial setting is `off'.
BartBiczBoży
la source
@Fox OP ne mentionne rien sur TERM qu'il utilise, donc cela peut être juste une réponse alternative. Quoi qu'il en soit, cette page est au top tout en recherchant les problèmes d'écran.
BartBiczBoży
2
Cela a fait l'affaire! Mots-clés: "vim quitter quitte terminal d'artefacts visuels"
Jay Taylor
0

J'ai essayé toutes ces options mais le résultat n'était pas celui que j'attendais. !cleareffacerait tout l'écran et ne laisserait pas derrière les commandes bash précédentes.

Une solution simple et correcte consiste à définir la chaîne de type de xtermterminal et la vitesse du 38400,38400terminal sous Détails du terminal dans les paramètres de mastic sous Connexion-> Données.

Enregistrez les paramètres et vous êtes prêt à partir.

Vinaya Rajanna
la source