Esiste un modo per uscire "meno" senza cancellare lo schermo?


68

Relativamente spesso, mi ritrovo a voler uscire lessma a lasciare ciò che stavo visualizzando sullo schermo, a cui fare riferimento. C'è un modo per fare questo? Soluzioni alternative?

(La mia attuale soluzione è quella di uscire, quindi utilizzare more. Quindi qualsiasi soluzione alternativa migliore di quella è benvenuta. L'ideale sarebbe qualcosa che posso usare una volta che sono già dentro less, forse con un'impostazione della shell o alcuni script.)

Il mio desktop è OSX, ma utilizzo server RHEL e Ubuntu.


1
La lettura di un output lungo (come in git diffo git log) less -Xoccuperà il buffer di scorrimento nel mio terminale ed eliminerà gran parte dell'output precedente. Mi piacerebbe se lesspotesse uscire con l'ultima schermata di output al momento dell'uscita; cioè non più di una pagina del buffer di scorrimento verrebbe presa dopo la chiusura less. Qualche idea?
musiphil,

A proposito, di -Rsolito è una scelta più sicura di -r.
musiphil

Grazie. Per chi si chiede:-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
Steve Bennett il

@musiphil Forse -c?
Vanessa Phipps

@MatthewPhipps: credo -csia come aggiornare lo schermo quando ci si sposta all'interno less.
musiphil

Risposte:


68

Questa è in realtà una funzione dell'emulatore di terminale che stai usando (xterm, gnome-terminal, konsole, screen). Una schermata alternativa, o altscreen, viene avviata quando vengono richiamati programmi come lesso vim. Questa schermata secondaria non ha buffer di cronologia e si chiude immediatamente quando si esce dal programma, tornando alla schermata originale che ripristina la cronologia e il posizionamento del contenuto della finestra precedente.

È possibile impedire l' lessavvio in una schermata secondaria passando l'argomento "-X".

less -X /path/to/some/file

Puoi anche passare "-X" come variabile d'ambiente. Quindi, se stai usando bash, posizionalo in ~/.bashrc:

export LESS="-X"

Tuttavia, questo disabilita l'inizializzazione e la deinizializzazione di termcap (capacità terminale), quindi altre visualizzazioni quando si utilizza lesspotrebbero apparire disattivate.

Un'altra opzione sarebbe quella di utilizzare screene impostare l'opzione altscreen offnel tuo ~/.screenrc. lessnon cancella lo schermo e dovrebbe preservare la formattazione del colore. Presumibilmente tmuxavrà la stessa opzione.

Questo articolo di blog descrive il problema e offre alcune diverse soluzioni specifiche gnome-terminalcon successo variabile.


2
Perfetto. C'è un aspetto negativo?
Steve Bennett,

2
Aspetta, ne ho già scoperto uno: l'output di git log(e probabilmente altri comandi colorati) è incasinato.
Steve Bennett,

1
@SteveBennett È abbastanza piccolo da renderlo un alias:alias les="/usr/bin/less -X"
bonsaiviking

4
Hey, penso che ho appena scoperto un antidoto alla git logquestione di cui sopra: export LESS="-r -X". (Non ho idea di ciò che gli effetti collaterali di che sono ...)
Steve Bennett

5
In realtà, gitimposta la LESSvariabile su FRSXse non è impostata quando esegue il cercapersone, quindi puoi semplicemente lasciarla LESSnon impostata e lessverrà eseguita automaticamente con -FRSX. Cerca core.pagerin git-config(1)per maggiori informazioni.
musiphil,

4

La soluzione di George non ha funzionato per me, ma questa soluzione ha funzionato (dalla voce del blog collegata nella sua risposta).

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. Modifica ~ / xterm-noclear.src

    • cambia il nome sulla seconda riga da 'xterm' a 'xterm-noclear', o qualunque cosa ti piaccia (cambia anche 'xterm-debian' se è presente)

    • rimuovere le istruzioni 'smcup' e 'rmcup' (ad es. "smcup = \ E [? 1049h," e "rmcup = \ E [? 1049l,")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear dovrebbe apparire nella tua directory ~ / .terminfo)

  5. $ export TERM=xterm-noclear (ora controlla il comportamento di less e, se soddisfatto, aggiungi la riga della direttiva export al tuo ~ / .profile)

(Ho copiato queste istruzioni direttamente dalla modifica rifiutata di @ jah della risposta di George.)


4

Il modo in cui me lo ricordo è less -SEXquando devo scaricare l'output sullo schermo ma non voglio che le linee si avvolgano. Ad esempio docker ps | less -SEXQuello che fa è questo:

  • -S
    • Scorri invece di avvolgere
    • Se si rilascia -E, è possibile utilizzare i tasti freccia per scorrere
  • -E
    • Esci quando raggiungi l'EOF
  • -X
    • Prevenire lo scambio / cancellazione a termine
    • La parte "memoria" è che io so cosa fa S ed E, quindi questa deve essere l'altra parte. (E la nostra ragione per eseguire questo comando in memoria è che vogliamo scaricare (non entrare in una sessione interattiva) output da scartare.

Se non ricordi less -SEX, non c'è molta speranza per te. Basta re-google ogni volta che immagino.


Il ragazzo ha un problema e gli offri meno sesso?
yossico,
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.