Widzę te ładne kolory na stronach przeglądanych z mniejszą liczbą ustawionych wiązek tych zmiennych. Co one oznaczają, gdzie jest dokumentacja? Czy to interpretuje mniej lub termcap?
Termcap to biblioteka, której Less używa do uzyskiwania dostępu do terminala. Termcap jest w dużej mierze przestarzały, został zastąpiony przez Terminfo , ale Terminfo oferuje aplikacjom interfejs kompatybilności Termcap. Mniej jest treści z interfejsem Termcap i korzysta z niego.
Biblioteka Termcap to opis udogodnień terminalu. Każde urządzenie jest oznaczone dwuliterowym (lub bardziej ogólnie dwuznakowym) kodem. Na przykład hc
identyfikuje terminale drukowane (tj. Drukarki, a nie ekrany); co
jest liczbą kolumn; md
zaczyna wyświetlać pogrubiony tekst. Każda zdolność ma wartość, która może być wartością logiczną (jak w przypadku hc
), liczbą całkowitą (jak w przypadku co
) lub łańcuchem (jak w przypadku md
). Wiele ciągów to sekwencje specjalne, które aplikacje mogą wysyłać do terminala w celu osiągnięcia określonego efektu.
Po co uciec sekwencjom? Ponieważ interfejs między terminalem a aplikacją jest strumieniem znaków (a dokładniej jeden strumień znaków w każdym kierunku: jeden do wprowadzania danych przez użytkownika, drugi do wyświetlania danych wyjściowych). Kiedy aplikacja zapisuje znak na terminalu, zwykle jest wyświetlany. Kilka znaków ma inne zachowanie: są to znaki kontrolne, które wykonują takie czynności, jak przesuwanie kursora, przełączanie atrybutów wyświetlania itp. Dostępnych jest znacznie więcej poleceń niż znaków sterujących, więc do większości poleceń można uzyskać sekwencje specjalne, które zaczynają się od postać specjalna (często postać ucieczki, stąd nazwa).
Na przykład, gdy Less chce wyświetlić pogrubiony tekst, sprawdza wartość tej md
możliwości. Jest to ciąg, który Less zapisuje w terminalu. Terminal rozpoznaje ten ciąg jako sekwencję zmiany znaczenia i dostosowuje jego stan wewnętrzny, aby kolejne znaki były wyświetlane pogrubioną czcionką.
Na początku terminale sprzętowe różne marki miały różne sekwencje ucieczki i możliwości; Baza danych i interfejs Termcap zostały wymyślone, aby aplikacje nie musiały wiedzieć o każdym modelu terminala. Obecnie większość emulatorów terminali ma bardzo podobne możliwości, ale baza danych Termcap lub Terminfo jest nadal przydatna w przypadku niewielkich różnic.
Te LESS_TERMCAP_*
zmienne mogą być ustawione w środowisku lub w .lesskey
pliku . Zapewnia Less alternatywne wartości dla funkcji terminalu. Kiedy Less chce użyć możliwości terminala, powiedzmy przełącz na pogrubienie, najpierw sprawdza, czy istnieje LESS_TERMCAP_md
zmienna. Jeśli ta zmienna istnieje, Less wykorzystuje swoją wartość jako sekwencję zmiany znaczenia do przejścia na pogrubioną. Jeśli nie, używa wartości z bazy danych Termcap. Ten mechanizm pozwala użytkownikowi zastąpić ustawienia bazy danych Termcap dla Less.
Najbardziej przydatne LESS_TERMCAP_*
ustawienia to sekwencje specjalne. Możesz mapować atrybuty na różne atrybuty. Można użyć tput
polecenia, aby spojrzeć na wartość zdolności do bieżącego terminala w systemie za termcap lub terminfo bazy danych. Możesz użyć sekwencji ucieczki bezpośrednio, jeśli nie masz nic przeciwko uzależnieniu od terminala. Na przykład to ustawienie mówi Lessowi, aby wyświetlało się pogrubioną czerwoną czcionką, gdy pojawi się polecenie pogrubienia:
LESS_TERMCAP_md=$(tput md; tput AF 1)
lub jeśli twoje tput
polecenie nie obsługuje nazw Termcap:
LESS_TERMCAP_md=$(tput bold; tput setaf 1)
Mężczyzna wysyła Mniej tekstu z bardzo prostym formatowaniem, które może wyrażać tylko pogrubienie i kursywę. Ponadto Less używa różnych możliwości formatowania do użytku wewnętrznego, takich jak podświetlanie wyników wyszukiwania i wyświetlanie linii trybu na dole. Oto niektóre sekwencje specjalne, których używa Less (wymieniam tylko te możliwości, których mapowanie jest uzasadnione):
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
Aby wyświetlić wydruki w kolorze, skorzystaj z setaf
możliwości (lub AF
z Termcap).
Te LESS_TERMCAP_*
ustawienia nie są wymienione w LESS
dokumentacji. Najlepszą referencją, jaką mogę zaoferować, jest moja odpowiedź tutaj .
LESS_TERMCAP_*
zmiennych env za pomocątput
zamiast znaków zmiany znaczenia.Odpowiedź Gillesa jest doskonała, ale mnie to zaciekawiło:
Jeśli Termcap jest przestarzały, chcę przejść na Terminfo
Chcę również zrezygnować z Termcap, ponieważ znalazłem błąd. Załóżmy, że umieściłeś zmienną termcap w swoim
~/.profile
lub podobnym:Następnie, jeśli wejdziesz
set
, zmienne Termcap zepsują wydruk w kolorze.Aby przełączyć się na Terminfo, możesz utworzyć plik
xterm-pretty.ti
:Skompiluj i zainstaluj plik:
Dodaj wiersz
~/.profile
lub podobny:źródło