Question écran de commande «moins» à la sortie - comment l'éteindre?


Comment forcer le less programme pour ne pas effacer l'écran à la sortie?

Je voudrais qu'il se comporte comme git log commander:

  • il quitte la page récemment vue à l'écran à la sortie
  • il ne sort pas du less même si le contenu tient sur un écran (essayez git log -1)

Des idées? Je n'ai pas trouvé de solution less options ni les variables env dans un manuel, je soupçonne qu'il est défini via une variable env si.


69
2018-02-09 11:21


origine


Vous avez probablement besoin de l'aspect défilement de moins, donc more ne conviendrait pas? - Svend


Réponses:


Pour prévenir less de vider l'écran à la sortie, utiliser -X.

De la page de manuel:

-X ou --no-init

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

En ce qui concerne moins de sortie si le contenu tient sur un écran, c'est l'option -F:

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

Entraîne moins à quitter automatiquement si tout le fichier peut être   affiché sur le premier écran.

-F n'est pas la valeur par défaut, donc elle est probablement préréglée quelque part pour vous. Vérifiez la var d'env LESS.


85
2018-02-09 11:59



Excellent! -X est ce que j'avais en tête. - Wojciech Kaczmarek
C'est particulièrement agaçant si vous connaissez -F mais non -X, alors que vous passez à un système qui réinitialise l'écran sur init, les fichiers courts n'apparaîtront tout simplement pas, sans raison apparente. Cela m'a mordu avec ack quand j'ai essayé de prendre mon ACK_PAGER='less -RF' réglage sur le 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
Ceci est particulièrement utile pour le pager homme, de sorte 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 ne vous intéresse que pour la faire disparaître lorsque vous quittez le pagineur moindre pour pouvoir utiliser les informations. Donc, j'ai ajouté: export MANPAGER='less -s -X -F' à mon .bashrc pour garder les informations de la page de manuel à l'écran lorsque je quitte moins, afin que je puisse réellement l'utiliser au lieu de le mémoriser. - Michael Goldshteyn
Ça craint un peu que vous deviez décider quand vous commencez less comment il doit se comporter lorsque vous allez sortir. - Michael Burr


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

export LESS="-XF"

appliquera toujours -X -F à chaque exécution de cette session.

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 contient des options que vous ne voulez pas. Pour exécuter la commande actuelle dans votre $ PATH au lieu d'un alias, faites-la précéder d'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

13
2017-07-11 19:11



En fait, j'ajoute export LESS="-XFR" pour que les couleurs transparaissent lessainsi que. - dotancohen
Merci pour ça! -XF à lui seul brisait la sortie de git diff, et -XFR obtient le meilleur des deux mondes - pas de nettoyage de l'écran, mais de couleur git diff sortie. - Giles Thomas