Czas na 24-bitowy terminal (tmux + zsh + vim)
Posted on Sat 01 February 2020 in Linux, Tips4Unices, Tips 4 VIM • 2 min read
Koniec dziadowania, jest XXI wiek i skoro można mieć wygodny interfejs do programowania (i nie tylko), to trzeba go sobie zapewnić.
Przygotowuję sobie 24-bitowy (RGB) terminal, do kodowania na zdalnej maszynie z tmuxem i pokolorowanym VIM-em .
Po co? By korzystać z szablonów kolorów (colorscheme) w VIM-ie i WIDZIEĆ kod. Porównanie z odzyskiwaniem wzroku jest tu chyba na miejscu.
Pierwszym elementem układanki jest użycie emulatora terminala, który jest w stanie wyświetlać 24-bitowy kolor. Pod macOS-em używam iTerm2, a w Linuksie (na razie) konsole ale zmaierzam dać szansę: st. Piszę o tym czego używam bo wiem, że po prostu to działa.
Listę terminali, wraz z opisem metody wykrywania "24-bitowości", można znaleźć tu: https://gist.github.com/XVilka/8346728.
Przełącznik terminali. Piękne.
Efekt w 24-bitowym terminalu wygląda tak:
W terminalu obsługującym jedynie 256 kolorów wyraźnie widać poszczególne bloki kolorów, bez płynnych przejść. Cóż, terminal próbuje się "wyrobić" w ograniczonej palecie barw:
Ostatnim krokiem, jest sprawdzenie czy w uruchomonym przełączniku terminali (tmux) VIM ładnie wyświetla 24-bitowe szablony kolorów.
W VIM-ie używam menedżera pluginów o nieszablonowej nazwie: vim-plug. Dzięki niemu zainstalowanie szablonu sprowadza się do dodania jednej, krótkiej linijki kodu do pliku konfiguacyjnego edytora i wydaniu jednego polecenie. Muszę już kończyć ten wpis, bo wkrótce przekroczę barierę po której będzie on TLTR;, więc opis ustawiania edytora przeniosę do następnego artykułu.
Dość, że po zainstalowaniu szablonu o nazwie: true.vim, mój edytor wygląda tak:
p.s. Niech się tmux automtycznie podłącza do istniejącej sesji, a jeśli takowej nie znajdzie, niech uruchamia świeżą. Dodaję do .zshrc to:
# włączam obsugę UTF-8 alias tmux="tmux -u" if [[ "$TERM" != "screen" ]]; then WHOAMI=$(whoami) if tmux has-session -t $WHOAMI 2>/dev/null; then tmux attach-session -t $WHOAMI else tmux new-session -s $WHOAMI fi else hostname -A fi