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
an xterm
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:
$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen
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):
$ echo $TERM
xterm-256color
$ infocmp -1 > xterm-256color
$ sed 's/^\(xterm-256color\)|/\1-na|/ ; /smcup\|rmcup/d ' \
xterm-256color > xterm-256color-na
$ diff -u xterm-256color*
--- xterm-256color 2013-08-04 16:33:52.041393461 +0200
+++ xterm-256color-na 2013-08-04 16:36:56.829930520 +0200
@@ -1,5 +1,5 @@
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-256color
-xterm-256color|xterm with 256 colors,
+xterm-256color-na|xterm with 256 colors,
am,
bce,
ccc,
@@ -155,7 +155,6 @@
rin=\E[%p1%dT,
rmacs=\E(B,
rmam=\E[?7l,
- rmcup=\E[?1049l,
rmir=\E[4l,
rmkx=\E[?1l\E>,
rmm=\E[?1034l,
@@ -170,7 +169,6 @@
sgr0=\E(B\E[m,
smacs=\E(0,
smam=\E[?7h,
- smcup=\E[?1049h,
smir=\E[4h,
smkx=\E[?1h\E=,
smm=\E[?1034h,
$ tic xterm-256color-na # loads the file to $HOME/.terminfo
$ find ~/.terminfo -type f
$ HOME/.terminfo/x/xterm-256color-na
Vous pouvez maintenant le tester via:
$ TERM=xterm-256color-na man man # and then hit q
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:
$ infocmp -1 screen > screen
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
:
$ cat ~/.screenrc
altscreen
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
XTerm*titeInhibit: true
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
$ LESS=X less foo
configure less
pour ne pas effacer / restaurer l'écran.
Car vim
vous pouvez inclure quelque chose comme
set t_ti= t_te=
en 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.