Come posso ancora vedere il testo 'man' dopo che ho lasciato man?


16

Di solito uso tcsh o bash e spesso voglio usare 'man' per rivedere le opzioni di un comando. Attualmente quando esco da man o ctrl-C, il testo man scompare e vedo il buffer di scrollback che era lì prima di eseguire il comando 'man'. Mi piacerebbe ancora vedere il testo "man" che stavo visualizzando come riferimento mentre sto digitando il comando al prompt dei comandi senza aprire una seconda finestra, come posso farlo?

Risposte:


17

Questo comportamento deriva dalla funzione di "schermo alternativo" inclusa in alcuni terminali (hardware) e nella maggior parte degli emulatori (software) di terminali. Quello che succede è che alcuni programmi compatibili con il terminale passano allo "schermo" alternativo per fare il loro lavoro e tornare allo "schermo" normale quando vengono chiusi (esci, sospeso, ecc.). Ciò cancella efficacemente l'output finale di tali programmi.

Una ricerca web per "terminfo prevent altscreen" ha fornito una pagina che discute il "problema" dello schermo alternativo e diverse soluzioni .

Come descritto nella pagina collegata, alcuni programmi possono essere configurati per evitare l'uso della schermata alternativa. L' -Xopzione per less è un modo indiretto per farlo. Vim può essere configurato in modo simile disabilitando le variabili t_tie t_te.


Una soluzione con un ambito più ampio è quella di modificare la voce terminfo per il proprio terminale in modo che non includa le sequenze di controllo dello schermo alternative. Le voci terminfo formano un database che indica ai programmi che controllano le sequenze da inviare a un terminale per creare determinati effetti (spostare il cursore, cancellare lo schermo, cancellare parte della linea corrente, ecc.). Modificando la voce terminfo utilizzata dal terminale, è possibile disporre di "trascurare di dire" a tutti i programmi che utilizzano terminfo che esistono anche le sequenze di controllo "schermo alternativo".

Dalla lista delle sequenze di controllo per xterm , possiamo vedere che le sequenze di controllo di interesse (per xterm -come emulatori) sono

  • abilita schermo alternativo: ESC [ ? 47 h(allo stesso modo per 1047 e 1049) e
  • ripristina schermo normale: ESC [ ? 47 l(allo stesso modo per 1047 e 1049).

Questi codici sono probabilmente presenti nelle variabili terminfo smcupe rmcup. Un modo rapido e sporco per eliminare queste variabili per il tuo attuale TERM potrebbe apparire così:

infocmp | sed -e 's/[sr]mcup=[^,]*,//' > /tmp/noaltscreen-terminfo
tic -o ~/.terminfo/ /tmp/noaltscreen-terminfo

Questo metodo è piuttosto rozzo e certamente non funzionerà per tutti i terminali, ma probabilmente funzionerà per la maggior parte degli emulatori di terminali simili a xterm . Idealmente, è necessario esaminare i valori nelle variabili smcupe rmcupdella voce terminfo per il proprio terminale e modificarli in modo conservativo per evitare comportamenti indesiderati. La pagina di discussione / soluzione sopra collegata ha un file terminfo “precotto” che potresti usare invece di hackerare il tuo (ma qual è il divertimento in questo?).


10

È necessario impostare $MANPAGERsu /usr/bin/less -isX, sostituendo il percorso in cui lesssi trova come richiesto. La parte importante è -X; il -isè l'insieme predefinito passato a meno.


9

Supponendo che il tuo cercapersone sia less, imposta la variabile di ambiente in modo LESSda includere "X". Ad esempio il mio è:

LESS="-iMFXRj4a"

Puoi impostarlo nel tuo ~/.bashrcfile

export LESS="-X"

e includi tutte le altre opzioni che hai alrady o aggiungi quelle che ti piacciono.


4

Un altro trucco - meno elegante delle altre risposte - è:

man what | more

(Almeno, questo funziona su MacOS X, che di solito è abbastanza simile per essere valido.)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.