tmux, Vim i Solarized

19

Lokal

Przeglądając tmux , Vim i Solarized , mogę znaleźć wiele skarg na 256 kolorów i „wrażenia użytkownika”. Cóż, mam odwrotny „problem”, tzn. Vim działa dobrze z pełnym motywem Solarized tylko w tmux .

tło

Od jakiegoś czasu poprawiam i modyfikuję kolorystykę terminala Ubuntu i Guake'a i prawie doszedłem do perfekcji, którą osiągam , kiedy używam tmux , co z kolei oznacza zawsze. Próbuję teraz zrozumieć, dlaczego tak się dzieje.

Poniżej znajdują się dwa Terminale, jeden po lewej uruchamia tylko Vima (pokazuje prąd .vimrc), podczas gdy drugi uruchamia Vima w sesji tmux . Jak wyraźnie widać, tylko w sesji tmux czcionki są pogrubione, co, jak sądzę, jest poprawne (czy nie?).

wprowadź opis zdjęcia tutaj

Pytanie

Dlaczego tmux pozwala na pogrubienie czcionki, podczas gdy terminal, na którym działa tmux , nie obsługuje? Czy to błąd, czy funkcja?

Atcold
źródło
Jaka jest wydajność wejścia echo $TERMi wyjścia tmux?
jasonwryan
tmux mówi, screenpodczas gdy terminal mówi xterm:)
Atcold
@jasonwryan przeczytał inne pytanie OP tutaj i odpowiedź Gillesa na podobne tutaj . Najwyraźniej $TERMnie jest to tak istotne.
terdon
@terdon jest w tym przypadku istotny: tmux wymaga ustawienia terminu na screen (lub wariant), a xterm jest domyślnie terminem 8 kolorów. Właśnie dlatego OP widzi różnicę.
jasonwryan
Włóż xterm*termName: xterm-256colorswoje ~/.Xresourcesi sprawdź, czy to coś zmieni ...
jasonwryan

Odpowiedzi:

22

Krótka odpowiedź

To jest błąd.

Pełna odpowiedź

Wygląda na to, że „poprawne” wizualizacja jest jednym z lewej strony, gdzie pogrubione czcionkinie wydane. Dla tego, co mogłem zrozumieć ( tutaj jest odniesienie), pogrubiony atrybut został pierwotnie użyty do ustawienia podświetlonej wersji 8 kolorów podstawowych.

Historycznie istniała korespondencja jeden do jednego między pogrubionymi wersjami 8 domyślnych kolorów ANSI i jasnymi wersjami 8 domyślnych kolorów. Dawno temu, gdy program kolorowy wymagał wyświetlania pogrubionego tekstu, emulatorom terminali prawdopodobnie łatwiej było wyświetlić jaśniejszą wersję dowolnego koloru tekstu (i oczekiwać, że użytkownik zinterpretuje to jako pogrubienie) niż wyświetlić krój pogrubiony.

Zasadniczo dzieje się tutaj to, że w celu użycia pełnej palety Solarized , z pomarańczowym , fioletowym i wszystkimi poziomami szarości , kolory są wywoływane pogrubionym atrybutem , który z kolei odnosi się do alternatywnych 8 kolorów Paleta ANSI.

Terminal rozumie to poprawnie i pokazuje kolor pomarańczowy i szary w normalnym składzie, podczas gdy tmux dodaje do nich niepotrzebnie pogrubioną czcionkę. Podsumowując, lewa strona jest poprawna, podczas gdy prawa nie.

pytanie 2

Czy istnieje sposób na wyłączenie pogrubionego renderowania tmux ?
Nadal muszę to zbadać i zaktualizuję tę odpowiedź, gdy tylko coś znajdę.

Odpowiedź 2

I oto mamy rozwiązanie! :)

Aby tmux zachowywał się poprawnie, musimy to nazwać, mówiąc mu, że jesteśmy w środowisku o 256 kolorach.

TERM=xterm-256color /usr/bin/tmux

Dla wygody możemy aliasto zrobić (tj. Dodać alias tmux="<the line above>"do swojego ~/.bashrc).

tmux poprawnie interpretuje niepogrubione kolory „pogrubione-alternatywne”

Wywołanie tmuxas tmux -2, zmuszenie tmuxa do działania z obsługą 256 kolorów (zamiast ponownego zdefiniowania TERMzmiennej środowiskowej) nie pozwoli na prawidłową interpretację „pogrubionej alternatywy” 8 kolorów (tzn. Jaśniejszy wariant spowoduje również pogrubienie składu). Dlatego gorąco polecam skorzystanie z powyższego rozwiązania, aby mieć zarówno poprawną interpretację 256 kolorów, jak i nie pogrubioną „pogrubioną alternatywę”.

Atcold
źródło
dużo miłości człowieku !!
shxfee