Selon le terminal / l'environnement, la séquence suivante a différents effets:
$ ls
1
2
$ man ls
enter q
Soit je vois le dernier écran de page de manuel affiché au-dessus de l'invite actuelle, soit la sortie ls et la sortie shell précédente sont restaurées. Le même effet est observé par exemple lors de son utilisation vim
puis de sa suspension pour faire quelque chose sur le shell.
Sur Fedora 19 - l'écran par défaut semble être sans restauration, un gnome-terminal / xterm utilise la restauration par défaut.
Sous Solaris, cela dépend du db terminal / terminfo utilisé.
Je souhaite configurer le comportement de restauration de manière cohérente entre différents systèmes / terminaux.
Réponses:
La fonctionnalité semble être appelée «écran alternatif» ou basculer entre l'écran normal et l'écran alternatif.
Vous pouvez l'explorer à l'aide d'un xterm. Par exemple, tapez
man man
anxterm
et exit man. Vous pouvez maintenant passer à l'écran alternatif via Ctrl+ Souris2 (clic du milieu) -> 'Afficher l'écran alternatif'. Vous pouvez également saisir directement les séquences de contrôle xterm , par exemple:Les deux dernières commandes fonctionnent également dans gnome-terminal (probablement dans d'autres aussi).
Ce qui se passe au démarrage de
man
/vi
/less
etc., c'est qu'ils envoient une commande abstraite en clair. À la sortie (ou à la suspension), ils envoient une commande abstraite de restauration d'écran. La façon dont la commande se traduit en séquences de contrôle de terminal concrètes est définie dans la base de données terminfo .Désactiver la commutation d'écran alternative
Ce qui devrait fonctionner pour tous les terminaux est d'ajuster les entrées terminfo locales, c'est-à-dire de supprimer le mappage des commandes d'écran d'effacement / de restauration abstraites.
Vous pouvez le faire comme ceci - pour l'
$TERM
entrée actuelle (pour gnome-terminal sur Fedora 19 par exemple):Vous pouvez maintenant le tester via:
Vous pouvez répéter les étapes ci-dessus pour d'autres terminaux si vous en utilisez plusieurs. Si tout fonctionne comme prévu, vous pouvez le régler
TERM
via votre fichier shell rc.Vous pouvez également spécifier directement le nom du terminal en tant que paramètre
infocmp
, par exemple:Activer la commutation d'écran alternative
Certains terminaux prennent en charge la fonction de commutation d'écran alternative (par exemple, l' écran ), mais la désactivent par défaut .
Car
screen
vous pouvez l'activer via votre~/.screenrc
:Si vous vous connectez à distance via ssh pour - disons - un système Solaris, la base de données terminfo à l'échelle du système configurée à distance est en quelque sorte historique, cassée ou inclut des valeurs par défaut inhabituelles / spécifiques à Solaris qui ne correspondent pas aux terminaux `` de pointe ''. vous exécutez ssh.
Ainsi, c'est une option pour simplement copier la base de données terminfo locale de / usr / share / info (sur le client) vers
host:~/.terminfo
(sur le serveur).Si le format terminfo compilé n'est pas compatible, vous pouvez également exporter / importer les entrées comme dans le paragraphe précédent.
J'ai essayé avec un terminfo-db d'une installation Cygwin et le copier directement sur un système Solaris 10 a fonctionné.
Dans le cas où vous souhaitez partager une autre terminfo db entre utilisateurs, vous spécifiez son chemin via la
TERMINFO
variable d'environnement.Ignorer la séquence de contrôle
Certains terminaux prennent en charge la désactivation de la séquence de contrôle pour une commutation d'écran alternative. Par exemple, xterm a une option, pas gnome-terminal.
Pour xterm, c'est la ressource X , par exemple
Configurations spécifiques au programme
Certains programmes ont des fichiers de configuration pour configurer les commandes de séquence de contrôle / terminfo qu'ils envoient. Par exemple
configure
less
pour ne pas effacer / restaurer l'écran.Car
vim
vous pouvez inclure quelque chose commeen toi
~/.vimrc
.Je n'ai pas trouvé d'option comment configurer ce comportement pour le haut - par défaut, il n'envoie pas d'écran de restauration.
la source
smcup
ourmcup
. Dans mon cas, il y a d'autres trucs qui viennent sur la même ligne avec eux. Ces autres éléments ont également été supprimés. Alors peut-être que quelque chose commes/[sr]mcup=[^,]*,//'
c'est mieux.