Kolory na stronach podręcznika

63

Kiedy patrzę na stronę podręcznika w mojej konsoli (nie xterm) widzę jakieś podbarwienie, ale nie dostaję tego w swoim xterm(np. konsole) Czy jest jakiś sposób, żeby to włączyć? mam nadzieję, że dość proste rozwiązanie?

ksenoterracid
źródło

Odpowiedzi:

78

Musisz użyć tej termcap(5)funkcji. Strona podręcznika w niektórych Uniksach mówi, że to narzędzie jest przestarzałe i używane terminfo, ale nadal jest dostępne w innych (i terminfojest bardziej skomplikowane).

Co ważniejsze, lesswykorzystuje termcap.


Ustawianie kolorów dla less

Wykonuję następujące czynności, aby lessi man(który używa less) będzie miał kolor:

$ cat ~/.LESS_TERMCAP 
export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan
export LESS_TERMCAP_me=$(tput sgr0)
export LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4) # yellow on blue
export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7) # white
export LESS_TERMCAP_ue=$(tput rmul; tput sgr0)
export LESS_TERMCAP_mr=$(tput rev)
export LESS_TERMCAP_mh=$(tput dim)
export LESS_TERMCAP_ZN=$(tput ssubm)
export LESS_TERMCAP_ZV=$(tput rsubm)
export LESS_TERMCAP_ZO=$(tput ssupm)
export LESS_TERMCAP_ZW=$(tput rsupm)
export GROFF_NO_SGR=1         # For Konsole and Gnome-terminal

A potem ~/.bashrcrobię to:

# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"

# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP

UWAGA: Zobacz dokumentację dotyczącą LESS_TERMCAP_*zmiennych? jak to działa.

Wynik końcowy

    ss strony podręcznika man

Stefan Lasiewski
źródło
7
Myślę, że powodem tego jest to, że działa tak, jak to działa, ponieważ „konsola” tłumaczy „podkreślenie” na kolor, podczas gdy X11 obsługuje podkreślenia. Możesz przetestować tę teorię, wpisując echo -e "\e[04mhello world\e[0m"konsolę i terminal X11 i zauważając różnicę. Tak więc powyższy hack nadużywa termcap, aby okłamać MNIEJ, jakie kody musi emitować dla pogrubienia / podkreślenia i zmusza go do tworzenia kodów ucieczki kolorów.
Kent Fredric
7
Rzeczywiście, tłumaczenie podkreślenia na niebieski ma historyczne powody, sięgając do trybów tekstowych oryginalnych kart graficznych PC MDA i CGA (w rzeczywistości tryby tekstowe CGA są nadal dostępne). Te karty graficzne zachowały dwa bajty na znak: jeden z kodem ASCII, drugi z atrybutami. MDA zinterpretował bajt atrybutu jako kombinacje podkreślenia, jasności, migania i odwrotności, podczas gdy CGA zinterpretował ten bajt jako kolor pierwszego planu i tła. I zdarzyło się, że atrybut MDA podkreślenia był równy atrybutowi CGA dla niebieskiego na czarnym.
celtschk
3
To nie działa w Konsole ani Gnome-terminalu. Ustawiam je, a jedyna zmiana koloru dotyczy kursora i strony statusu. I okazuje się, że potrzebne są: export GROFF_NO_SGR=1.
CMCDragonkai
2
To wiele utworzonych podpowłok. Jaka jest przewaga nad tym prostszym podejściem ?
Tom Hale,
1
@TomHale, głównie kompatybilność między systemami / terminalami (oraz możliwość udostępniania skryptu innym w sposób jednoznaczny). Jeśli kiedykolwiek pracujesz nad polem, które używa różnych kodów sterujących, i scp / rsync do niego profil powłoki, gdy wszystkie kody sterujące są zakodowane na stałe, jak w tym przykładzie, mogą nie działać zgodnie z oczekiwaniami w miejscu docelowym maszynę i możesz skończyć z nieczytelnym wyjściem. Oczywiście, jeśli skrypt będzie działał tylko na jednej lub dwóch znanych maszynach / terminalu-emu, wtedy podejście na sztywno jest w porządku.
Mark G.
15

Możesz rozwiązać ten problem, na przykład używając innego pagera most. manużyje programu określonego w PAGERzmiennej środowiskowej. Ze strony podręcznika man (1) :

MANPAGER, PAGER

Jeśli ustawiono $ MANPAGER lub $ PAGER (preferowane jest $ MANPAGER), jego wartość jest używana jako nazwa programu używanego do wyświetlania strony podręcznika. Domyślnie używany jest pager -s.

Wartość może być prostą nazwą polecenia lub poleceniem z argumentami i może wykorzystywać cudzysłowy (odwrotne ukośniki, pojedyncze cudzysłowy lub podwójne cudzysłowy).

Nie może używać potoków do łączenia wielu poleceń; w razie potrzeby użyj skryptu opakowania, który może zająć wyświetlanie pliku jako argumentu lub na standardowym wejściu.

Jeśli mostjest zainstalowany w systemie, wypróbuj to przed uruchomieniem man:

export PAGER=most
konserwowane prymaty
źródło
2
mostpowinien być zainstalowany, aby to działało.
enzotib
3
mostma dziwne skróty klawiszowe ... których nie można konfigurować.
Mateen Ulhaq,
10

Domyślne podkreślenia ranią moje oczy. Ta konfiguracja znacznie poprawia manczytanie mojej strony:

Przykład strony w kolorze

Dodaj następujące w swoim `~ .bashrc ':

# Have less display colours
# from: https://wiki.archlinux.org/index.php/Color_output_in_console#man
export LESS_TERMCAP_mb=$'\e[1;31m'     # begin bold
export LESS_TERMCAP_md=$'\e[1;33m'     # begin blink
export LESS_TERMCAP_so=$'\e[01;44;37m' # begin reverse video
export LESS_TERMCAP_us=$'\e[01;37m'    # begin underline
export LESS_TERMCAP_me=$'\e[0m'        # reset bold/blink
export LESS_TERMCAP_se=$'\e[0m'        # reset reverse video
export LESS_TERMCAP_ue=$'\e[0m'        # reset underline
export GROFF_NO_SGR=1                  # for konsole and gnome-terminal

Aby wygrać, połącz z export MANPAGER='less -s -M +Gg' (źródło), aby wyświetlić swój procent w dokumencie.

Tom Hale
źródło
3
Jak wspomniano w komentarzu do innej odpowiedzi @CMCDragonkai, wymaga export GROFF_NO_SGR=1to pracy z niektórymi emulatorami terminali.
Ben
1
Dla zwycięstwa!! Uwielbiam export MANPAGER='less -s -M +Gg'dodaje % display .
MikeyE,
5

Jeśli używasz Oh My Zsh , możesz dodać colored-man-pagesdo pluginstablicy w swoim .zshrcpliku.

drżenie
źródło
3

Trwale oszczędzaj „najbardziej”

Otwórz terminal ( Ctrl+ Alt+ T)

  1. Zainstaluj „większość”.

    sudo apt-get install most
    
  2. edytuj .bashrc, wpisz:

    nano ~/.bashrc
    
  3. Dodaj te linie:

    # color man-pages persistently
    export PAGER='most'
    
  4. Zapisać

    ( Ctrl+ O) -> Enter-> ( Ctrl+ X)

  5. Odświeżać

    source ~/.bashrc
    
  6. Test

    man ln
    

Działa to również w Xterm.

Denis Griffin
źródło
aby uniknąć otwierania nano, możesz dołączyć do bashrc z terminala: sudo apt install most; echo "export PAGER = 'most'" >> ~ / .bashrc; source ~ / .bashrc
Będzie
1

Zaczerpnięte z http://nion.modprobe.de/blog/archives/569-colored-manpages.html

Fragment:

$ mkdir ~/.terminfo/ && cd ~/.terminfo

Teraz pobierz terminfoopis (zapisz następujące jako mostlike.txt):

# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor
mostlike|manpages with color looking like most, 
    am, hs, km, mir, msgr, xenl, 
    cols#80, it#8, lines#24, wsl#40, 
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
    bel=^G, bold=\E[1m\E[31m, clear=\E[H\E[2J, cr=^M, 
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
    cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
    dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, 
    dsl=\E]0;\007, ed=\E[J, el=\E[K, enacs=\E)0, fsl=^G, 
    home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, 
    is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H, 
    kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
    kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, 
    kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
    kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
    kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, 
    kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
    kfnd=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
    kslt=\E[4~, rc=\E8, rev=\E[7m\E[34m, ri=\EM, rmacs=^O, 
    rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, 
    rmso=\E[m, rmul=\E[m, 
    rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7, 
    sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, 
    smkx=\E[?1h\E=, smso=\E[1;30m\E[47m, smul=\E[32m, 
    tbc=\E[3g, tsl=\E]0;, u6=\E[%i%d;%dR, u7=\E[6n, 
    u8=\E[?1;2c, u9=\E[c, 

Teraz skompiluj go za pomocą tic(kompilatora opisu pozycji terminfo):

$ tic mostlike.txt

(Możesz chcieć usunąć mostlike.txtplik po kompilacji).

A następnie po prostu zdefiniuj alias w *rcpliku swojej ulubionej powłoki.

$ alias man="TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man"

Jeśli chcesz zmodyfikować plik terminfo, użyj, infocmp mostlikeaby pobrać jego zawartość później.

brudny
źródło
11
To pomaga, jeśli streścisz tutaj źródło, aby ludzie mogli zobaczyć, co mówi, bez konieczności klikania (i na wypadek, gdyby strona kiedykolwiek się zawiodła)
Michael Mrozek
3
Podaj odpowiedzi, a nie tylko linki do odpowiedzi. Jednak bardzo dobrze jest podać linki, które wspierają twoją odpowiedź. Wyobraź sobie, że szukałem google dla tego pytania - dobra odpowiedź na StackExchange szybko znajdzie drogę do pierwszej strony wyników.
Stefan Lasiewski,
Link jest martwy.
farzan
Znaleziono to mostlike.txtonline.
Kaushal Modi,
Jak wygląda wyjście?
Tom Hale,
1

Biorąc odpowiedź dirtybit , chciałem zmienić kolor podświetlonych wyników wyszukiwania. Nazywa się to „trybem wyróżniającym się”, oto przykładowy plik „xterm-yellow.ti”:

xterm-yellow|yellow standout mode,
# exit standout mode
  rmso=\e[m,
# begin standout mode
  smso=\e[5;30;43m,
# similar terminal
  use=xterm,

Skompiluj i zainstaluj plik:

tic xterm-yellow.ti

Dodaj wiersz do „~ / .profile” lub podobnego:

TERM=xterm-yellow
Steven Penny
źródło