Écran d'effacement des commandes 'moins' à la sortie - comment l'éteindre?

79

Comment forcer le lessprogramme à ne pas effacer l'écran à la sortie?

Je voudrais qu'il se comporte comme une git logcommande:

  • il laisse la page récemment vue à l'écran en quittant
  • il ne lessquitte pas le même si le contenu tient sur un seul écran (essayez git log -1)

Des idées? Je n'ai pas trouvé d' lessoptions appropriées ni de variables env dans un manuel, mais je suppose que cela a été défini via une variable env.

Wojciech Kaczmarek
la source
Vraisemblablement, vous avez besoin de l'aspect défilement de moins, alors morene serait pas approprié?
Svend

Réponses:

95

Pour éviter lessd'effacer l'écran à la sortie, utilisez -X.

De la page de manuel:

-X ou --no-init

Désactive l'envoi des chaînes d'initialisation et de désinitialisation de termcap au terminal. Cela est parfois souhaitable si la chaîne de désinitialisation fait quelque chose d'inutile, comme effacer l'écran.

Pour réduire le nombre de sorties si le contenu ne tient que sur un seul écran, voici l’option -F:

-F ou --quit-si-un-écran

Moins permet de quitter automatiquement si tout le fichier peut être affiché sur le premier écran.

-FCe n’est pas le cas par défaut, il est donc probablement prédéfini quelque part pour vous. Vérifiez la var env LESS.

sleske
la source
Excellent! -X est ce que j'avais en tête.
Wojciech Kaczmarek
7
Ceci est particulièrement gênant si vous connaissez -Fmais ne le savez pas -X, car passer ensuite à un système qui réinitialisera l'écran sous init fera que les fichiers courts n'apparaîtront tout simplement pas, sans raison apparente. Cela m’a mordu ackquand j’ai essayé d’utiliser mon ACK_PAGER='less -RF'réglage sur Mac. Merci beaucoup!
markpasc
@markpasc: Merci de l'avoir signalé. Je n'aurais pas réalisé que cette combinaison causerait cet effet, mais maintenant c'est évident.
Sleske
7
Ceci est particulièrement utile pour le téléavertisseur homme, afin que les pages de manuel ne disparaissent pas dès que vous quittez moins avec la touche 'q'. C'est-à-dire que vous faites défiler jusqu'à la position dans une page de manuel qui vous intéresse uniquement pour qu'elle disparaisse lorsque vous quittez le moins de pagineur afin d'utiliser les informations. Donc, j’ai ajouté: export MANPAGER='less -s -X -F'à mon .bashrc de garder les informations de la page de manuel à l’écran lorsque j’arrêtais moins, afin que je puisse réellement les utiliser au lieu de les mémoriser.
Michael Goldshteyn
2
C'est un peu dommage que vous deviez décider quand vous commencerez lesscomment vous devez vous comporter lorsque vous allez quitter.
Michael Burr
17

Si vous souhaitez que l'une des options de ligne de commande soit toujours définie par défaut, vous pouvez ajouter à votre variable .profile ou .bashrc la variable d'environnement LESS. Par exemple:

export LESS="-XF"

appliquera toujours -X -F chaque fois que moins est exécuté à partir de cette session de connexion.

Parfois, les commandes sont aliasées (même par défaut dans certaines distributions). Pour vérifier cela, tapez

alias

sans arguments pour voir si elle a été aliasée avec des options que vous ne voulez pas. Pour exécuter la commande réelle dans votre $ PATH au lieu d'un alias, il suffit de la préfacer avec une barre oblique inverse:

\less

Pour voir si une variable d’environnement LESS est définie dans votre environnement et affecte le comportement:

echo $LESS
Derek Douville
la source
2
En fait, j'ajoute export LESS="-XFR"pour que les couleurs transparaissent lességalement.
dotancohen
2
Merci pour ça! -XFà lui seul cassait la sortie de git diff, et -XFRobtenait le meilleur des deux mondes - pas de nettoyage d'écran, mais une git diffsortie colorée .
Giles Thomas
1

Ou simplement le configurer dans votre configuration globale git:

git config --global core.pager 'less -FX'

De cette façon, les autres outils ne sont pas affectés (ce que j'aime bien).

Lester Cheung
la source