Uzyskiwanie 256 kolorów do pracy w tmux


177

Mam 256 kolorów, które działają dobrze konsole,. Myślałem, że tmuxspróbuję, ponieważ w przeciwieństwie do ekranu, wydaje się, że obsługuje vitryb. Jednak okazuje się, że kolory mojego monitu pojawiają się i jest to najprawdopodobniej, ponieważ mam monit w trybie 256 kolorów. Co muszę zrobić, tmuxaby rozpoznać wszystkie 256 kolorów?


2
tmux -2Musiałem to zrobić w terminatorze i byłem nieco zaskoczony. -2Flaga mówi tmux wymusić korzystanie z 256 kolorów ... czy twój terminal podoba czy nie ... dun dun dunnn: P
Dylan

Odpowiedzi:


253

Tmux FAQ wyraźnie odradza ustawienie TERM do niczego innego niż ekran lub ekran-256color w pliku init, shell, więc nie rób tego!

Oto, czego używam:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

oraz w moim .tmux.conf:

set -g default-terminal "screen-256color"

Alias tmuxdo „ tmux -2” również powinien załatwić sprawę.


4
Podoba mi się sposób, aby ustawić go w .tmux.conf najlepiej ... użycie powłoki do ustawienia po prostu nie wydaje się właściwe
xenoterracide

6
Dziwne. Nie potrzebujesz tmux -2na OSX, ale potrzebujesz go z Gnome Terminal. Dzięki za informacje dodane do moich aliasów!
FX

1
W Kubuntu 13.10 samo ustawienie .tmux.conf nie przywróciło mi 256 kolorów (co spowodowało wyróżnienie w trybie wizualnym vim), ale alias działał. Z pewnością wolałby rozwiązanie tylko dla plików .tmux.conf.
Jacob Dalton,

1
ssh'd na maszynę Ubuntu (z OS X Terminal), domyślny terminal .tmux.conf był wszystkim, czego potrzebowałem.
znaczniki pojedynków

2
wydaje mi się, że wszystko, co muszę zrobić, to TERM=screen-256color tmuxnie tworzyć .tmux.confpliku. Czy coś brakuje?
joelostblom

39

Spróbuj ustawić 256 kolorów wprost w swoim bashrc lub zshrc:

export TERM=xterm-256color

lub

export TERM=screen-256color

Jeśli masz problemy z tym, że tmux nie usuwa poprawnie kolorów tła podczas korzystania z ustawienia terminu ekranowego, możesz spróbować:

export TERM=screen-256color-bce

1
pierwszy jest moim domyślnym ustawieniem TERM ... Właśnie wypróbowałem inne 2 i mój monit wciąż nie pokazuje kolorów po wejściu do tmux. (Chciałbym zauważyć, że tmux pokazuje kolory na dole) ... wygląda na to, że kiedy wejdę do tmux, resetuje TERM na TERM = ekran ... może jest sposób na obejście tego w konfiguracji?
ksenoterrakid

nvm ... Wydaje mi się, że umieszczenie go w rc mojej powłoki działa ... jak denerwujące jest to, że ignoruje zmienną env TERM ustawianą podczas wykonywania tmux ... Chyba będę musiał wprowadzić warunek w moim rc.
ksenoterrakid

1
-bce nie jest kompatybilny z tmux. Tmux nie obsługuje usuwania koloru tła:
Dustin Kirkland

1
Miałem ten problem z Roxterm. Mam nadzieję, że dodanie do tego roxterm pomoże ludziom znaleźć to samo rozwiązanie, co ja. Skończyłem na vimie i wybranie linii sprawiłoby, że zniknęłyby. Niezwykle trudne do wyszukania. roxterm domyślnie konfiguruje tylko $ TERM = xterm, co nie jest dobre.
BeepDog

5
-1, nie powinieneś ustawiać ani bezwarunkowo w pliku inicjującym powłoki. Ustawienie go na xterm-256colorzastąpi go również w tmuxie, a ustawienie go screen-256colorpoza tmuxem może prowadzić do błędów wyświetlania.
nyuszika7h,

19

Zgodnie z FAQ tmux , dodaj to do ~/.tmux.conf:

set -g default-terminal "screen-256color"

Następnie dodaj ten alias dla tmux:

alias tmux='tmux -2'

Nie musisz zastępować TERMzmiennej w swoim profilu lub podczas uruchamiania tmux.

Więcej informacji: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim


2
Konfiguracja tmux wystarczyła mi; Nie musiałem ustawiać aliasu (choć prawdopodobnie nie zaszkodzi).
anishpatel

Konfiguracja samego tmux działa dla mnie. Alias ​​był niewystarczający.
Harry Moreno,

12

Najnowsza wersja ncurses jest dostarczana z wpisem terminfo tmux-256color ( FAQ o tym wspomina). Jako przykład, korzyści wynikające z zastosowania tmux-256color na ekranie-256color jest kursywą odpowiednio zinterpretowany (ekran nie obsługuje kursywa).

Więc jeśli masz najnowszy pakiet ncurses, następujące działania również będą działać:

set -g default-terminal "tmux-256color"

Chciałbym zauważyć, że to rozwiązanie wydaje się wymagać tmux 2.6lub lepiej
zzxyz

3

Naprawdę ważna uwaga tutaj, jeśli używasz Ubuntu starszego niż Bionic (18.04). Jeśli tmux 2.1biegasz lub jesteś starszy, a prawdopodobnie tak jest, w zasadzie żadna rada, którą przeczytasz w Internecie o tmuxie, nie zadziała.

tmux -Vjest do tego łatwym testem. Jeśli widzisz 2.1lub starsze, możesz zbudować tmux ze źródła lub dodać nieoficjalne repozytorium. Zaktualizowałem mój tmux o:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Osobiście po aktualizacji do 2.6: 1) moje klucze działają lepiej, 2) porady online faktycznie działają, 3) moje kolory nie są szalone. Duża poprawa.

(Oto link do strony repozytorium, btw): https://launchpad.net/~hnakamur


2

Nie potrafiłem wyjaśnić, dlaczego to działa, ale rozwiązało to problem.

~ / .tmux.conf

set-option -g default-command bash

1
Próbowałem tego w ostateczności i, co zaskakujące, zadziałało!
v0d1ch

1

To jest moje rozwiązanie .... Edytuję plik .bashrc i dodaje go

if [ "$TERM" != "xterm-256color" ]; then
      export TERM=xterm-256color
    fi

Mam nadzieję, że to działa w twoim przypadku


10
Po co zawracać sobie głowę if? Możesz po prostu ustawić zmienną.
joeytwiddle
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.