La funzione sembra essere chiamata "schermata alternativa" o passare dalla schermata normale a quella alternativa.
Puoi esplorarlo usando un xterm. Ad esempio, digitare man man
an xterm
e uscire da man. Ora puoi passare alla schermata alternativa tramite Ctrl+ Mouse2 (clic centrale) -> 'Mostra schermata alternativa'. In alternativa è possibile inserire direttamente le sequenze di controllo xterm , ad esempio:
$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen
Gli ultimi due comandi funzionano anche in gnome-terminal (probabilmente anche in altri).
Quello che succede all'avvio di man
/ vi
/ less
etc. è fondamentalmente che inviano un comando astratto a schermo chiaro. All'uscita (o sospensione) inviano un comando di schermata di ripristino astratto. Il modo in cui il comando si traduce in sequenze concrete di controllo dei terminali è definito nel database terminfo .
Disabilita il cambio schermo alternativo
Ciò che dovrebbe funzionare per tutti i terminali è regolare le voci locali del terminfo, cioè rimuovere la mappatura dei comandi astratti di schermata di cancellazione / ripristino.
Puoi farlo in questo modo - per la $TERM
voce corrente (per esempio per gnome-terminal su Fedora 19):
$ 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
Ora puoi provarlo tramite:
$ TERM=xterm-256color-na man man # and then hit q
È possibile ripetere i passaggi precedenti per altri terminali se si utilizzano più terminali. Se tutto funziona come previsto, puoi impostare TERM
il file rc della shell.
È inoltre possibile specificare direttamente il nome del terminale come parametro per infocmp
, ad esempio:
$ infocmp -1 screen > screen
Abilita cambio schermo alternativo
Alcuni terminali supportano la funzione di commutazione dello schermo alternativa (ad es. Schermo ), ma la disabilitano di default .
Perché screen
puoi abilitarlo tramite il tuo ~/.screenrc
:
$ cat ~/.screenrc
altscreen
Se si effettua il login remoto tramite ssh per - diciamo - un sistema Solaris, forse il database terminfo a livello di sistema configurato in remoto è un po 'storico, rotto o include alcuni valori insoliti / specifici di Solaris che non corrispondono ai terminali' bleeding edge ' corri ssh.
Pertanto, è un'opzione per copiare il database terminfo locale da / usr / share / info (sul client) a host:~/.terminfo
(sul server).
Nel caso in cui il formato terminfo compilato non sia compatibile, è anche possibile esportare / importare le voci come nel paragrafo precedente.
Ho provato con un terminfo-db da un'installazione Cygwin e copiandolo direttamente su un sistema Solaris 10 ha funzionato.
Nel caso in cui si desideri condividere un db terminfo alternativo tra utenti, è necessario specificarne il percorso tramite la TERMINFO
variabile di ambiente.
Ignora la sequenza di controllo
Alcuni terminali supportano la disabilitazione della sequenza di controllo per la commutazione alternativa dello schermo. Ad esempio xterm ha un'opzione, gnome-terminal no.
Per xterm è la X-risorsa , ad es
XTerm*titeInhibit: true
Configurazioni specifiche del programma
Alcuni programmi dispongono di file di configurazione per configurare la sequenza di controllo / i comandi terminfo che inviano. Per esempio
$ LESS=X less foo
configura less
per non cancellare / ripristinare lo schermo.
Perché vim
puoi includere qualcosa del genere
set t_ti= t_te=
in te ~/.vimrc
.
Non ho trovato sull'opzione come configurare quel comportamento in alto - per impostazione predefinita non invia la schermata di ripristino.