Tmux pozwala na przełączanie między wieloma programami (w szczególności shellem) w jednym oknie terminala. Pozwala także na odłączenie się (detach) od sesji, która nie jest ubijana a działa sobie w tle.
Jeśli masz do czynienia z serwerami (choćby nawet jako programista) to musisz znać to narzędzie (albo screena, ale wpis jest o tmuxie ;)). Zapewne nieraz Ci się zdarzyło działać coś na serwerze i nagle zerwało połączenie, a ty akurat odpalałeś bardzo_ważny_skrypt.rb i wiesz, że zerwanie połączenia ssh spowodowało ubicie go. Tmux m.in. rozwiązuje ten problem. Jeśli działałeś w ramach sesji tmuxa to zerwane połączenie ssh nie jest problemem. Po prostu wbijasz na serwer i dołączasz do poprzedniej sesji (proces działał cały czas).
Ale nie jest to jedyny powód by poznać to narzędzie.
Ja używam go także lokalnie do programowania. A używam go tak:
cd ~/work/project && bin/tmuxinator
i w efekcie w aktualnym oknie terminala odpala mi się sesja tmuxa (tmuxinator to taki gem, który pozwala na definiowanie sesji tmuxinatora per projekt), z predefiniowanymi oknami dla serwera, consoli, logtaila, mysql itp.
# wylisowanie sesji
tmux ls
# założenie nowej sesji
tmux new -s MyProject
# lub jeśli istnieje sesja o nazwie MyProject
tmux a -t MyProject
ctrl-A + , - zmiana nazwy obecnego okna
ctrl-A + c - nowe okno
ctrl-A + strzałka lewo/prawo - zmiana obecnego okna
ctrl-A + d - detach (sesja w tle)
ctrl-A + | - podział okna na 2 ułożone obok siebie
ctrl-A + - - podział okna na 2 ułożone jedno nad drugim
ctrl-A + x - ubicie całej sesji
Ja używam dość intensywnie do automatycznego odpalania środowiska developerskiego danej aplikacji. Jednym aliasem/funkcją odpala mi się w tle tmux (tmux new-session -d -s ... ...) i po kolei odpala zeus start, potem rails server i dalej ewentualnie to co jest potrzebne w danym projekcie (np. solr). Bardzo wygodne i efektywne.
W ten sposób ustawiłem sobie, żeby między tabami w tmuxie przełączać się tymi kombinacjami, których już używałem od dawna np. cmd+{ i cmd+}. Przełączanie pomiędzy pane’ami mam załatwione cmd+jeden z kursorów. W ten sposób zaoszczędza się bardzo dużo czasu.
Co do samego tmuxa, to z jednej strony używam i lubię, a z drugiej strony czuję, że gdybym pracował nad jednym projektem, gdzie nie ma dodatkowo wielu mniejszych projektów, to raczej bym sobie dał spokój.
Ja odpalam zawsze. Raz że po to żeby nie mieć kilku tabów/okienek konsoli odpalonej, a dwa że niestety zdarzy mi się wylogować / zamknąć okno terminala i później trzeba wszystko na nowo odpalać… w tmuxie sesja przetrwa moje chaotyczne zamykanie okienek.
W sumie ciężko mi sobie wyobrazić pracę bez vima z lewej strony i ‘sidebara’ z testami po prawej…
Dokładnie takie same mam odczucia. Przydaje się przy skakaniu pomiędzy projektami, ale pozatym już mniej. Może jeszcze tak jak hubertlepicki wspominał o pamiętaniu sesji (całkiem przydatna funkcja).
Używającym OSX polecam używanie iTerm2 i terminala “pod-klawiszem”. Okno można sobie bardzo przyjemnie podzielić na kilka sesji i/lub używać tabów. Poza tym iTerm2 sam w sobie ma masę przydanych funkcjonalności.
Chowanie/pokazywanie pod klawiszem sprawia, że nie ma takiego bałaganu, więc szansa na to, że się coś przypadkowo zamknie maleje.