Je viens de l'ajouter à mon .bashrc
pour obtenir une sortie colorisée avec less
:
# Colorize less man pages.
export LESS_TERMCAP_md=$'\e[01;34m'
export LESS_TERMCAP_us=$'\e[01;33m'
export LESS_TERMCAP_so=$'\e[01;44;37m'
export LESS_TERMCAP_mb=$'\e[01;31m'
export LESS_TERMCAP_mr=$'\e[01;35m'
export LESS_TERMCAP_me=$'\e[00m'
export LESS_TERMCAP_ue=$'\e[00m'
export LESS_TERMCAP_se=$'\e[00m'
... et maintenant tout d'un coup, certaines commandes (qui semblent être liées à l'affichage des variables d'environnement) produisent une sortie couleur correspondant à ces nouveaux paramètres. Suis-je en train de m'échapper? Ou est-ce un comportement intentionnel? J'ai essayé quelques autres variantes d'échappement, mais elles ne fonctionnaient pas less
.
Par exemple, voici une capture d'écran d'une env
commande.
php -i
a également une sortie colorisée, mais uniquement dans la section des variables d'environnement.
man top
=\e[01;34mSYNOPSIS\e[00m
au lieu de coloriser le mot "SYNOPSIS".Comme @Gilles le souligne dans sa réponse, il s'agit d'un comportement attendu.
Permettez-moi d'ajouter quelques informations.
LESS_TERMCAP_xx
remplacer les capacités TERMCAP. Cette substitution est gérée parless
elle-mêmescreen.c
et la valeur est utilisée ultérieurement comme si elle avait été renvoyée par la bibliothèque TERMCAP. Cela signifie qu'il doit s'agir d'une séquence brute de caractères de contrôle.Mon compte sur la façon de « solution » est d'envelopper
less
lui - mêmela source
#!/bin/sh
(qui est dash, dans mon cas)? Je ne peux pas comprendre comment insérer unESC
caractère littéral avec vim.export LESS_TERMCAP_me="$(printf '\e[0m')"
. En fait, si vous regardez la réponse de @Gilles, il prétend qu'ilexport LESS_TERMCAP_me=$escape'[0m'
devrait aussi fonctionner avec/bin/sh
.