Comment puis-je toujours voir le texte 'homme' après avoir quitté l'homme?


16

J'utilise généralement tcsh ou bash et souhaite souvent utiliser 'man' pour examiner les options d'une commande. Actuellement, lorsque je quitte man ou ctrl-C, le texte man disparaît et je vois le tampon de défilement qui était là avant l'exécution de la commande 'man'. J'aimerais toujours voir le texte 'man' que je visualisais comme référence pendant que je tape la commande à l'invite de commande sans ouvrir une seconde fenêtre, comment puis-je faire cela?

Réponses:


16

Ce comportement provient de la fonctionnalité «écran de remplacement» incluse dans certains terminaux (matériels) et dans la plupart des émulateurs de terminaux (logiciels). Ce qui se passe, c’est que certains programmes sensibles aux terminaux basculent sur l’écran alternatif pour effectuer leur travail et reviennent sur l’écran normal lorsqu’ils sont licenciés (quitter, suspendre, etc.). Cela efface efficacement le résultat final de tels programmes.

Une recherche sur le Web sur «terminfo prevent Altscreen» a fourni une page qui traite du problème de l'écran de remplacement et de plusieurs solutions .

Comme le décrit cette page liée, certains programmes peuvent être configurés pour éviter l'utilisation de l'écran de remplacement. L' -Xoption moins cher est un moyen indirect de le faire. Vim peut être configuré de la même manière en désactivant les variables t_tiet t_te.


Une solution plus large consiste à modifier l' entrée terminfo de votre terminal afin qu'elle n'inclue pas les séquences de contrôle d'écran alternatives. Les entrées terminfo forment une base de données qui indique aux programmes les séquences de contrôle à envoyer à un terminal pour créer certains effets (déplacer le curseur, effacer l'écran, effacer une partie de la ligne en cours, etc.). En modifiant l'entrée terminfo utilisée par votre terminal, vous pouvez vous arranger pour «négliger de dire» à tous les programmes utilisant terminfo que les séquences de contrôle «écran alternatif» existent même.

Dans la liste des séquences de contrôle pour xterm , nous pouvons voir que les séquences de contrôle d’intérêt (pour les émulateurs terminaux semblables à xterm ) sont:

  • activer l'écran alternatif: ESC [ ? 47 h(de même pour 1047 et 1049), et
  • restaurer l'écran normal: ESC [ ? 47 l(de même pour 1047 et 1049).

Ces codes sont très probablement présents dans les variables terminfo smcupet rmcup. Voici un moyen rapide et sale d’exclure ces variables pour votre terme actuel:

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

Cette méthode est assez rudimentaire et ne fonctionnera certainement pas pour tous les terminaux, mais elle fonctionnera probablement pour la plupart des émulateurs de terminaux similaires à xterm . Idéalement, vous devriez étudier les valeurs dans les variables smcupet rmcupde l'entrée terminfo de votre terminal et les modifier de manière prudente pour éviter tout comportement indésirable. La page de discussion / solution ci-dessus contient un fichier terminfo «précuit» que vous pouvez utiliser au lieu de pirater le vôtre (mais quel est l'intérêt de cela?).


10

Vous devez définir $MANPAGERsur /usr/bin/less -isX, en remplaçant le chemin où lessse trouve si nécessaire. La partie importante est la -X; the -isest l'ensemble par défaut passé à less.


9

En supposant que votre pageur soit less, définissez la variable d'environnement LESSpour inclure "X". Par exemple le mien est:

LESS="-iMFXRj4a"

Vous pouvez définir cela dans votre ~/.bashrcfichier

export LESS="-X"

et inclure toutes les autres options que vous avez déjà ou ajouter celles que vous aimez.


4

Une autre astuce - moins élégante que les autres réponses - est la suivante:

man what | more

(Du moins, cela fonctionne sur MacOS X, qui est généralement assez similaire pour être valide.)


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.