bash: pokolorowana strona podręcznika

15

Gdzie muszę zajrzeć do systemu, aby pokolorować strony podręcznika?

Strony podręcznika są wyświetlane z mniejszą liczbą, więc próbowałem dodać następujące wiersze do mojego .bashrc, aby zmienić kolory: (Który działa dobrze, btw.)

 #
 #   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
 #########################################

Do mojego wstydu muszę przyznać, że nie dowiedzieć się, co druga liczba par oznaczało, czyli 5;74a 5;146.

Czy ktoś może to wyjaśnić?

sjas
źródło
O co chodzi z bliskimi głosami? Znam już link do Wikipedii i nadal nie mam pojęcia, co oznacza kolejność sekwencji. Próba i błąd oraz ustawienie różnych wartości wcale mi nie pomogło. Proste „go RTFM” nie pomaga mi tutaj.
sjas
Żartujesz sobie ze mnie ... to jest po prostu świetne! Gdzie jest to udokumentowane? Szukałem na stronach podręcznika BASH i LESS, ale nie mogłem znaleźć łańcucha LESS_TERMCAP.
ysap
OK, znalazłem to na początek: unix.stackexchange.com/questions/119/colours-in-man-pages
ysap
To: „ for name [ [ in [ word ... ] ] ; ] do list ; done” ma teraz większy sens, w kolorze ... 8-)
ysap
@ysap: Nie widziałem tych linków i nie pamiętam, gdzie to znalazłem. Umieść to tutaj w celu dokumentacji i zapytaj o sekwencje specjalne w procesie. :)
sjas

Odpowiedzi:

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

W tych dwóch przypadkach wszystkie kolory i atrybuty są resetowane (0), kolor pierwszego planu jest zmieniany na żółty / brązowy (33) lub cyjan (36), następnie miganie jest włączone (5), a następnie dzieje się coś innego ( 74 lub 146), które są prawdopodobnie niezdefiniowane i niepożądane.

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

Ten jest inny, ponieważ 38 przyjmuje dodatkowe parametry numeryczne. Oznacza rozszerzony kolor pierwszego planu (i podobnie 48 będzie takie samo dla tła), a jeśli po nim pojawi się 5 jako kolejny parametr (który nie ma nic wspólnego z miganiem tym razem), trzecia liczba określa indeks koloru ( od 0 do 255: 16 standardowych kolorów starszych, następnie sześcian RGB 6x6x6, a następnie 24 kolory w skali szarości), patrz np . tutaj .

Niektóre terminalowe emulatory obsługują również bezpośrednie arbitralne kolory RGB, w takim przypadku po 38 powinny następować 2, a następnie trzy liczby dziesiętne w zakresie 0–255 odpowiednio dla R, G, B, np. # BADA55 to

\E[38;2;186;218;85m
egmont
źródło
1
Szkoda, że ​​nie możesz wiedzieć, które ;oznaczają dodatkowe parametry poprzedniego, a które zupełnie nowe, nie patrząc na dokładne liczby. Zalecono więc oddzielenie dodatkowych parametrów :zamiast. Na przykład, aby zresetować wszystko, a następnie przełączyć na kolor # 246, a także włączyć miganie zamiast 0;38;5;246;5powiedzieć 0;38:5:246;5. Niestety jest obsługiwany przez jeszcze mniej terminali.
egmont
5

„\ e [... m” to kod SGR CSI. Opisuje je strona Wikipedia w sekcji „ Kod ucieczki ANSI”, „Kody CSI” .

Ignacio Vazquez-Abrams
źródło
1

Z pomocą http://invisible-island.net/xterm/ctlseqs/ctlseqs.html i linku wikipedii doszedłem do wniosku, że 5to znaczy 5 Blink: Slow less than 150 per minute.

Ostatnie liczby brzmią następująco:

 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 .

Wydaje się również, że liczba liczb nie jest ważna, tylko ich chronologiczny porządek.

sjas
źródło
0

Nie do końca bashowe rozwiązanie, ale wciąż aktualne, użyj:

PAGER = ~ / bin / vimpager

i upuść to w ~ / bin: https://github.com/rkitover/vimpager

Bruce Edge
źródło