comment faire moins pager répondre à la molette de défilement et ne pas effacer l'écran

13

Je connais des réponses comme comment faire défiler la molette de la souris en utilisant le bash-and-gnome-terminal , qui consiste à supprimer l' -Xindicateur de la variable d'environnement $ LESS. Mais je voudrais faire les deux :

  1. utilisez la molette de la souris pour faire défiler le pager (par opposition au défilement de la barre de défilement de la fenêtre du terminal) (que vous obtenez en supprimant -X de $LESS)
  2. faire en sorte que le contenu du téléavertisseur reste à l'écran après avoir quitté (ce qui est normalement accompli en ajoutant -X à $LESS).

Existe-t-il un moyen de prendre mon gâteau et de le manger également?

Kevin G.
la source

Réponses:

20

Pas sans pirater le code source de less. Un peu d'histoire de fond:

Moins ne peut pas du tout gérer la souris (y compris les événements de défilement).

Les émulateurs de terminaux prennent en charge un écran dit alternatif. C'est à cela que la plupart des applications en plein écran passent pour leur durée (et reviennent à l'écran normal lorsqu'elles quittent, provoquant la "restauration" du contenu précédent), et il n'a pas de tampon de défilement. Moins bascule également vers cet écran alternatif, à moins qu'il ne -Xsoit indiqué, auquel cas il ne le fait pas.

De nombreux émulateurs de terminaux ont compris que lorsqu'il est en mode écran alternatif et que l'application exécutée à l'intérieur n'est pas intéressée par les événements de la souris, il est judicieux de convertir le défilement en événements de pression de touche Haut ou Bas. C'est un hack, et ce serait nuisible soit sur un écran normal (imaginez ce qui se passerait par exemple à l'invite de votre shell), soit lorsque l'application souhaite gérer la souris (bien sûr, ils doivent alors voir les événements réels de la souris). Mais comme par défaut aucun de ces deux ne tient lorsque vous exécutez less, ce hack entre en jeu (sous réserve que l'émulateur de terminal le supporte et soit activé via \e[?1007hvs.\e[?1007l). Vos événements de défilement sont convertis par l'émulateur de terminal en touches Haut et Bas, et moins ne peuvent pas les distinguer des touches réelles. Il ne reçoit pas les événements de défilement de la souris: il voit les touches Haut et Bas.

Vous êtes donc là: Soit vous passez à un écran alternatif et le hack du terminal convertit les événements de défilement en touches à moindre coût, et l'écran normal est restauré lorsque vous quittez; ou vous ne le faites pas, et il ne peut pas y avoir de conversion magique d'événements de défilement en touches et moins ne comprend pas les événements de défilement.

Alors, que pourrait-on faire? Eh bien, implémentez le support de la souris en moins et laissez-le gérer les événements de défilement lui-même (et vivez avec un comportement de clic ou de copier-coller non par défaut), ou implémentez un autre hack bizarre: à la fermeture, après être revenu à l'écran normal, lesspourrait pour la dernière fois imprimer un écran de contenu, en répétant tout ce qui a été affiché avant de quitter.

En pratique, cela se résume essentiellement à: désolé, oubliez-le.

egmont
la source
0

Apparemment, la mise à niveau vers moins de 530 ou plus récent vous donnera la fonctionnalité souhaitée,

http://www.greenwoodsoftware.com/less/news.530.html

Ce sont les différences entre la version 487 et la version 530:

Ne pas sortir la séquence d'initialisation du terminal si vous utilisez -F et que le fichier tient sur un seul écran.

Vous n'avez pas trouvé de PPA `` moins '' qui ont la version la plus récente, alors téléchargez simplement le pack source et créez localement et installez-le.

et configurer git comme ceci:

git config --global core.pager 'less -F -S -R -i -+X'

plus d'informations: Comment utiliser "moins -F" sans "-X", mais toujours afficher la sortie si une seule page?

Ted Feng
la source
0

Il n'est pas vraiment possible d'utiliser la molette de la souris pour faire défiler moins de pager, mais il est possible d'utiliser la molette de la souris pour faire défiler le contenu avec le pager w3m! w3m est un " pager navigable WWW avec une excellente prise en charge des tableaux / cadres ", il est donc même possible de l'utiliser comme navigateur Web de console. De plus, il est possible d'utiliser w3m comme visualiseur d'images de console (ne fonctionne pas avec tous les émulateurs de terminaux, mais fonctionne plutôt bien avec xterm). w3m " prend en charge les tableaux, les cadres, les connexions SSL, les images en couleur et en ligne ". Application très utile! capture d'écran

ILUXA
la source