Je vois ces jolies couleurs dans les pages de manuel vues avec moins lors de la définition de ces variables. Que veulent-ils dire, où est la documentation? Est-ce interprété par less ou termcap?
Termcap est une bibliothèque que Less utilise pour accéder au terminal. Termcap est en grande partie obsolète, après avoir été remplacé par Terminfo , mais Terminfo offre une interface de compatibilité Termcap aux applications. Less se contente de l'interface Termcap et l'utilise.
La bibliothèque Termcap est une description des installations du terminal. Chaque établissement est identifié par un code à deux lettres (ou plus généralement à deux caractères). Par exemple, hc
identifie les terminaux papier (c.-à-d. Les imprimantes, pas les écrans); co
est le nombre de colonnes; md
commence à afficher du texte en gras. Chaque capacité a une valeur qui peut être un booléen (comme avec hc
), un entier (comme avec co
) ou une chaîne (comme avec md
). La plupart des chaînes sont des séquences d'échappement que les applications peuvent envoyer au terminal pour obtenir un certain effet.
Pourquoi échapper des séquences? Parce que l'interface entre le terminal et l'application est un flux de caractères (plus précisément, un flux de caractères dans chaque sens: un pour l'entrée utilisateur, un pour la sortie à afficher). Lorsqu'une application écrit un caractère sur le terminal, celui-ci est généralement affiché. Quelques caractères ont un comportement différent: ce sont des caractères de contrôle, qui permettent, par exemple, de déplacer le curseur, de changer d'attributs d'affichage, etc. Il y a beaucoup plus de commandes que de caractères de contrôle. un caractère spécial (souvent le caractère d'échappement, d'où le nom).
Par exemple, lorsque Less souhaite afficher du texte en gras, il recherche la valeur de la md
capacité. Ceci est une chaîne que Less écrit sur le terminal. Le terminal reconnaît cette chaîne en tant que séquence d'échappement et ajuste son état interne afin que les caractères suivants soient affichés en gras.
Aux débuts des terminaux matériels, différentes marques avaient différentes séquences d'échappement et capacités; la base de données et l'interface Termcap ont été inventées pour que les applications n'aient pas à connaître tous les modèles de terminaux. De nos jours, la plupart des émulateurs de terminaux ont des fonctionnalités très similaires, mais la base de données Termcap ou Terminfo est toujours utile pour gérer des différences mineures.
Les LESS_TERMCAP_*
variables peuvent être définies dans l'environnement ou dans le .lesskey
fichier . Il fournit Less avec des valeurs alternatives pour les capacités du terminal. Lorsque Less veut utiliser une capacité de terminal, disons passer en gras, il vérifie d’abord la présence d’une LESS_TERMCAP_md
variable. Si cette variable existe, Less utilise sa valeur en tant que séquence d'échappement pour passer en gras. Sinon, il utilise la valeur de la base de données Termcap. Ce mécanisme permet à l'utilisateur de remplacer les paramètres de la base de données Termcap pour Less.
Les LESS_TERMCAP_*
paramètres les plus utiles sont les séquences d'échappement. Vous pouvez mapper des attributs sur différents attributs. Vous pouvez utiliser la tput
commande pour rechercher la valeur d'une fonctionnalité du terminal actuel dans la base de données Termcap ou Terminfo du système. Vous pouvez utiliser directement des séquences d'échappement si cela ne vous dérange pas d'être dépendant du terminal. Par exemple, ce paramètre indique à Less d'afficher en gras rouge lorsque vous êtes invité à afficher en gras:
LESS_TERMCAP_md=$(tput md; tput AF 1)
ou si votre tput
commande ne supporte pas les noms Termcap:
LESS_TERMCAP_md=$(tput bold; tput setaf 1)
L'homme envoie moins de texte avec une mise en forme très simple qui ne peut qu'exprimer en gras et en italique. De plus, Less utilise diverses fonctionnalités de formatage pour son usage interne, notamment pour mettre en évidence les résultats de la recherche et afficher la ligne de mode en bas. Voici certaines des séquences d'échappement utilisées par Less (je ne répertorie que les fonctionnalités qu'il est raisonnablement utile de remapper):
termcap terminfo
ks smkx make the keypad send commands
ke rmkx make the keypad send digits
vb flash emit visual bell
mb blink start blink
md bold start bold
me sgr0 turn off bold, blink and underline
so smso start standout (reverse video)
se rmso stop standout
us smul start underline
ue rmul stop underline
Pour afficher la sortie en couleur, utilisez la setaf
fonctionnalité (ou AF
avec Termcap).
Les LESS_TERMCAP_*
paramètres ne sont pas mentionnés dans la LESS
documentation. La meilleure référence que je puisse offrir est ma réponse ici .
LESS_TERMCAP_*
vars env en utilisanttput
plutôt que des caractères d'échappement.La réponse de Gilles est excellente, mais cela m'a rendu curieux:
Si Termcap est obsolète, je souhaite passer à Terminfo
Je souhaite également m'éloigner de Termcap car j'ai trouvé un bogue. Disons que vous mettez une variable termcap dans votre
~/.profile
ou similaire:Après cela, si vous entrez
set
, les variables Termcap gâchent votre sortie couleur.Pour basculer sur Terminfo, vous pouvez créer un fichier
xterm-pretty.ti
:Compiler et installer le fichier:
Ajouter une ligne à
~/.profile
ou similaire:la source