bash: kolorierte manpage

15

Wo muss ich im System nachsehen, um die Manpages einzufärben?

Die Manpages werden mit weniger angezeigt, daher habe ich versucht, meinem .bashrc die folgenden Zeilen hinzuzufügen, um die Farben zu ändern:

 #
 #   L E S S   C O L O R S   F O R   M A N   P A G E S
 #

 # CHANGE FIRST NUMBER PAIR FOR COMMAND AND FLAG COLOR
 # currently 0;33 a.k.a. brown, which is dark yellow for me 
    export LESS_TERMCAP_md=$'\E[0;33;5;74m'  # begin bold

 # CHANGE FIRST NUMBER PAIR FOR PARAMETER COLOR
 # currently 0;36 a.k.a. cyan
    export LESS_TERMCAP_us=$'\E[0;36;5;146m' # begin underline

 # don't change anything here
    export LESS_TERMCAP_mb=$'\E[1;31m'       # begin blinking
    export LESS_TERMCAP_me=$'\E[0m'           # end mode
    export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
    export LESS_TERMCAP_so=$'\E[38;5;246m'    # begin standout-mode - info box
    export LESS_TERMCAP_ue=$'\E[0m'           # end underline

 #########################################
 # Colorcodes:
 # Black       0;30     Dark Gray     1;30
 # Red         0;31     Light Red     1;31
 # Green       0;32     Light Green   1;32
 # Brown       0;33     Yellow        1;33
 # Blue        0;34     Light Blue    1;34
 # Purple      0;35     Light Purple  1;35
 # Cyan        0;36     Light Cyan    1;36
 # Light Gray  0;37     White         1;37
 #########################################

Zu meiner Schande muss ich zugeben, dass ich nicht herausgefunden habe, was das zweite Zahlenpaar bedeutet, nämlich das 5;74und das 5;146.

Kann jemand das weiter klären?

sjas
quelle
Was ist es mit den engen Abstimmungen? Ich kenne den Wikipedia-Link bereits und habe noch keine Ahnung, was die Reihenfolge der Sequenz bedeutet. Versuch und Irrtum und das Einstellen anderer Werte haben mir überhaupt nicht geholfen. Ein einfaches "go RTFM" hilft mir hier nicht weiter.
Sjas
Du musst mich veräppeln ... das ist einfach toll! Wo ist das Zeug dokumentiert? Ich habe in den Manpages BASH und LESS nachgesehen, aber den String LESS_TERMCAP nicht gefunden.
ysap
OK, fand dies für den Anfang: unix.stackexchange.com/questions/119/colors-in-man-pages
ysap
Das: " for name [ [ in [ word ... ] ] ; ] do list ; done" macht jetzt mehr Sinn, in Farbe ... 8-)
ysap
@ysap: Habe diese Links nicht gesehen und kann mich nicht erinnern, wo ich das gefunden habe. Stellen Sie dies hier zu Dokumentationszwecken und erkundigen Sie sich dabei nach den Escape-Sequenzen. :)
sjas

Antworten:

1
export LESS_TERMCAP_md=$'\E[0;33;5;74m'  # begin bold
export LESS_TERMCAP_us=$'\E[0;36;5;146m' # begin underline

In diesen beiden Fällen werden alle Farben und Attribute zurückgesetzt (0), die Vordergrundfarbe wird auf Gelb / Braun (33) oder Cyan (36) umgeschaltet, dann wird das Blinken eingeschaltet (5) und dann passiert etwas anderes ( 74 oder 146), die wahrscheinlich undefiniert und nicht erwünscht sind.

export LESS_TERMCAP_so=$'\E[38;5;246m'

Dies ist anders, weil 38 zusätzliche numerische Parameter benötigt. Es steht für erweiterte Vordergrundfarbe (und 48 wäre für Hintergrund gleich), und wenn als nächster Parameter eine 5 folgt (was diesmal nichts mit Blinken zu tun hat), gibt die dritte Zahl den Index der Farbe an ( von 0 bis 255: 16 herkömmliche Standardfarben, gefolgt von einem 6x6x6 RGB-Würfel, gefolgt von 24 Graustufenfarben (siehe z . B. hier) .

Bestimmte Terminalemulatoren unterstützen auch direkte, willkürliche RGB-Farben. In diesem Fall sollte auf 38 2 und dann auf drei Dezimalzahlen im Bereich von 0 bis 255 für R, G bzw. B folgen, z. B. # BADA55

\E[38;2;186;218;85m
egmont
quelle
1
Es ist ziemlich schlimm, dass Sie nicht wissen können, welche ;zusätzlichen Parameter für einen vorherigen und welche für einen brandneuen stehen, ohne die genauen Zahlen zu betrachten. Es wurde daher empfohlen, zusätzliche Parameter durch ein :stattdessen zu trennen . Um beispielsweise alles zurückzusetzen, wechseln Sie zu Farbe Nr. 246 und schalten 0;38;5;246;5Sie stattdessen das Blinken ein 0;38:5:246;5. Leider wird es von noch weniger Terminals unterstützt.
Egmont
5

"\ e [... m" ist der SGR-CSI-Code. Die Wikipedia-Seite "ANSI-Escape-Code", Abschnitt "CSI-Codes" beschreibt sie.

Ignacio Vazquez-Abrams
quelle
1

Mit Hilfe von http://invisible-island.net/xterm/ctlseqs/ctlseqs.html und dem Wikipedia-Link bin ich zu dem Schluss gekommen, dass das 5heißt 5 Blink: Slow less than 150 per minute.

Die letzten Zahlen klingen so:

 If 88- or 256-color support is compiled, the following apply. 
 P s = 3 8 ; 5 ; P s  Set foreground color to the second P s . 
 P s = 4 8 ; 5 ; P s  Set background color to the second P s .

Auch scheint es, dass die Anzahl der Zahlen nicht wichtig ist, nur ihre chronologische Reihenfolge.

sjas
quelle
0

Nicht gerade eine Bash-Lösung, aber dennoch relevant:

PAGER = ~ / bin / vimpager

und legen Sie dies in ~ / bin: https://github.com/rkitover/vimpager ab

Bruce Edge
quelle