Ekran tmux vs. GNU [zamknięty]

194

Przeglądając pytania dotyczące tmux (zwykle używałem GNU Screen). Moje pytanie brzmi: jakie są zalety i wady każdego z nich. Szczególnie nie mogłem znaleźć wiele na temat tmux.

Maciej Piechotka
źródło
9
Omówiono również na superuser.com/questions/236158/tmux-vs-screen
Lloyd Dewolf
5
Jak widać z dobrych odpowiedzi poniżej, nie są one oparte na opiniach.
reinierpost
@reinierpost - wydaje się, że wiele osób tutaj zbyt szybko zamyka pytania jako „głównie oparte na opiniach”. Możemy jednak głosować, aby ponownie otworzyć.
MountainX
Chociaż to pytanie jest pytaniem porównawczym, uważam, że argumenty za i przeciw są wystarczająco obiektywne, a zatem uzasadniony powściągliwość nie jest tutaj odpowiedni. Możesz sprawdzić powiązane pytanie SU, odpowiedzi są w porządku.
peterh

Odpowiedzi:

122

Z ich strony internetowej :

  • Czym tmux różni się od ekranu GNU? Co jeszcze oferuje?

tmux oferuje kilka zalet w stosunku do ekranu:

  • jasno zdefiniowany model klient-serwer: okna są niezależnymi jednostkami, które mogą być dołączane jednocześnie do wielu sesji i oglądane z wielu klientów (terminali), a także swobodnie przemieszczane między sesjami na tym samym serwerze tmux;
  • spójny, dobrze udokumentowany interfejs poleceń o tej samej składni, niezależnie od tego, czy jest używany interaktywnie, jako powiązanie klawiszy, czy z powłoki;
  • łatwo skryptowalne z powłoki;
  • wiele buforów pasty;
  • wybór układów klawiszy vi lub emacs;
  • opcja ograniczenia rozmiaru okna;
  • bardziej użyteczna składnia linii statusu, z możliwością wyświetlenia pierwszego wiersza wyjścia określonego polecenia;
  • czystsza, nowoczesna, łatwa w rozbudowie baza kodów na licencji BSD.

Jest jeszcze kilka funkcji, które zawiera ekran tmux:

  • wbudowana obsługa połączeń szeregowych i telnet; jest to wzdęcie i jest mało prawdopodobne, że zostanie dodane do tmux;
  • szersza obsługa platform, na przykład IRIX i HP-UX, oraz dla nieparzystych terminali.
nisc
źródło
4
cholera ... teraz chcę wypróbować tmux ... tylko dlatego, że ekran nie działał dla mnie z powodu braku skrótów klawiszowych vi.
ksenoterrakid
1
Czy skróty klawiszowe vi lub emacs oznaczają po prostu, że tmux ma dwa wygodne zestawy domyślne? Możliwe jest całkowite przekonfigurowanie skrótów klawiszowych ekranu za pomocą pliku rc.
jw013,
Możesz zdefiniować dowolne powiązania klawiszy. Patrz: openbsd.org/cgi-bin/…
nisc
Kiedy mówimy o realizacji, powinny one ostatecznie rozwiązać głupi błąd z <C-Left>w vimw tmux.
yo „
45

Jedną różnicą jest to, jak działają te dwa, gdy do jednej sesji podłączonych jest wiele terminali.

Z ekranem widok każdego podłączonego terminala jest niezależny od pozostałych. Dzięki tmux wszystkie podłączone terminale widzą to samo.

Załóżmy, że masz dwa terminale podłączone do jednej sesji Tmux. Jeśli wpiszesz ^B1 w jednym terminalu, drugi terminal przełączy się również do okna 1.

Gdy masz dwa terminale podłączone do jednej sesji ekranu i wpiszesz ^A1 w jednym, nie ma to wpływu na drugi terminal.

Jest to oparte na moich doświadczeniach z tmux 1.2; Widzę, że 1.3 jest niedostępny, ale nie zauważyłem niczego w dzienniku zmian na temat zmiany tego zachowania.

Jeśli podoba Ci się zachowanie ekranu i chcesz go w tmux:

Jeśli twoja oryginalna sesja tmux nazywa się 0(domyślna), możesz to zrobić tmux new-session -t 0), aby uruchomić nową niezależną sesję połączoną z tym samym zestawem okien, który może mieć własny widok.

zmoczyć
źródło
1
To ciekawe rozróżnienie. Jestem pewien, że każda z nich ma zalety w różnych przypadkach użycia. (przewaga tmux: dwie osoby związane z tą samą sesją tmux, np. do programowania w parach zdalnych zawsze będą widzieć to samo; przewaga ekranu: jedna osoba przymocowana do tego samego ekranu z dwóch miejsc dla dwóch różnych celów może mieć dwa różne widoki, nawet jednocześnie (z , powiedzmy, okna side-by-side (OS / windowmanager-level)).)
lindes
10
jeśli twoja oryginalna sesja tmux nazywa się „0” (domyślnie), możesz zrobić „tmux new-session -t 0”), aby rozpocząć nową niezależną sesję połączoną z tym samym zestawem okien, który może mieć swój własny widok. Jestem prawie pewien, że zadziałało to w wersji 1.2 / 1.3, ale nie pamiętam od razu.
Cos
@cos to jest dokładnie wskazówka, której szukałem. Dziękuję bardzo. Żałuję, że nie mogłem zagłosować dwa razy :) Za każdym razem zacznę ponownie łączyć się z „tmux new-session -t 0”.
jrwren
@Cos Zostało to dodane „OD 1.0 DO 1.1, 05 listopada 2009”. @jrwren Polecenie może być zwarte tmux new -t 0.
user285259,
24

tmux jest dość nowy w porównaniu z ekranem GNU. Zalety / wady to trudne pytanie, ponieważ oba programy rozwiązują w przybliżeniu ten sam problem. tmux ma licencję BSD, podczas gdy screen jest GNU GPL. To ma znaczenie dla niektórych osób.

screen jest obecnie bardziej reprezentowany (w Linuksie), to znaczy, że bardziej prawdopodobne jest, że znajdziesz go na danym komputerze z linuksem niż w tmuxie. tmux jest jednak bardziej reprezentowany w OpenBSD, ponieważ jest zawarty jako część instalacji podstawowej.

Oba programy pozwalają ci robić to samo, chociaż stan rzeczy jest nieco bardziej skomplikowany. Przełączanie się między nimi nie jest zbyt skomplikowane, ponieważ wiele funkcji ekranów również znalazło zastosowanie w tmux, chociaż jeśli jesteś zaawansowanym użytkownikiem jednego z nich, prawdopodobnie znajdziesz pewne frustracje podczas przełączania się na drugie.

Jak w przypadku każdego programu, tak naprawdę zależy to od twoich potrzeb i tego, z czym czujesz się lepiej. Wypróbuj je i przekonaj się, w którą grę grasz.

Aby uzyskać więcej informacji na temat tmux, zobacz https://tmux.github.io/

Gabe.
źródło
17

Największą różnicą w moim użyciu było to, że w Gnu Screen możesz dzielić ramki tylko w poziomie, podczas gdy w Tmux możesz dzielić zarówno w poziomie, jak i w pionie. Jest to rodzaj ruchomego celu, ale jak tu mówię, podział pionowy przenika na ekran .

Poza tym rzeczy są płaskie.

Eli Frey
źródło
10
możesz również podzielić w pionie na ekranie. mmm ... przynajmniej nie działa w domyślnej instalacji ekranu Ubuntu 10.10.
Stann
4
@ i istnieje długa stojąca łata do podziału ekranu w pionie ... która nigdy nie została uwzględniona w górnym biegu ... ale jestem pewien, że zastosowało ją wiele dystrybucji.
ksenoterrakid
17

Pomyślałem, że wspomnę tylko o byobuopakowaniu, które jest dostępne dla ekranu, dzięki czemu jest o wiele lepiej od razu po wyjęciu z pudełka. Nie wiem, czy coś takiego jest dostępne dla tmux, ale byobumój .screenrc stworzył tylko garść linii. Sprawdź ten krótki artykuł o byobu i zrzutach ekranu. Strona projektu byobu opisuje nazwę wywodzącą się z japońskiego terminu na dekoracyjne, wielopanelowe ekrany, które służą jako przegrody rozkładane. Ponadto samo uruchomienie nie szkodzi ustawieniom ekranu, więc możesz bezpiecznie wypróbować. Po rozpoczęciu sesji byobumożesz swobodnie połączyć się z nią za pomocą screeni nadal nie tracić żadnych dostosowań wykonanych przez byobu(więc używaj jej tylko do pierwszego wywołania). Dwie główne zalety to:

  • Uruchamia ekran z kilkoma paskami stanu z przydatnymi informacjami
  • Zapewnia wiele skrótów klawiszowych w celu łatwiejszego dostępu do funkcji ekranu

Nie używam części skrótów klawiszowych, ale zdecydowanie uważam, że paski stanu są przydatne.

Przydatny może być również link tmux Screen Vs. Myślę, że większość z nich jest już wspomniana w istniejących odpowiedziach.

haridsv
źródło
Twoja odpowiedź byłaby bardziej przydatna, gdybyś podsumował funkcje byobu, takie jak odpowiedzi z listą funkcji.
Gilles
OK, dodałem więcej informacji na ten temat byobu, ale jest to tak proste, jak uruchomienie polecenia i znalezienie go dla siebie (jest obsługiwane przez menu), ponieważ nie psuje istniejących ustawień ekranu. Uczyniłem moją odpowiedź wiki społeczności, więc możesz ją edytować.
haridsv 21.04.11
1
byobu wydaje się również obsługiwać tmux, przynajmniej w nowszych wersjach.
Darael
12

Drench podnosi interesujący punkt - domyślne zachowanie dwukrotnego łączenia się z tą samą sesją jest inne w tmux. Jeśli jednak chcesz dołączyć dwa razy i mieć niezależny widok okien w tej sesji - uruchom tmux za pomocą

tmux new-session -t <session name>

Spowoduje to utworzenie nowej sesji i dołączenie okien z już istniejącej sesji. Jeśli nie nazwałeś swojej pierwszej sesji, możesz dodać jedną z „zmiana nazwy sesji”.

Rikard Anglerud
źródło
12

Jedną z głównych wad screenjest to, że nie jest aktywnie rozwijany. Strony błędów zawierają blisko 200 nieprzypisanych elementów w ciągu 5 lat.

tmux ma również pewne otwarte problemy, ale znacznie mniej i jest aktywniej wspierany.

Harold
źródło
8

tmux jest nowszy i kilka innych funkcji.

Przekonałem się, że dobre użycie zależy od dobrego ustawienia.

Korzystam z vi (vim) do edycji (ruby na szynach) i jest kilka rzeczy do ustawienia, aby działały dobrze.

Oto mój plik ~ / .tmux.conf z wieloma przydatnymi ustawieniami:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
Michael Durrant
źródło
Tmux jest nowszy, ale „kilka dodatkowych funkcji” implikuje, że ma także co najmniej parytet funkcji z ekranem, co nie jest prawdą - oprócz tego, co wspomniano gdzie indziej, obsługa wielu użytkowników tmux jest poważnie brakuje. Brak acls lub status, i ogólnie rzecz biorąc pokazuje nowość tmux, ponieważ to, co możesz zrobić, nie jest bardzo dopracowane.
pół
Dobrze wiedzieć. Używam go już od roku i nie zauważyłem potrzeby używania języka polskiego, chociaż trochę węgierski może pomóc. To znaczy notacja. ok, kiepska gra słów;) Nie korzystałem wcześniej z ekranu, więc nie zauważyłem wspomnianych problemów. Trudniej byłoby przejść na ekran i stracić teraz nowe funkcje.
Michael Durrant
8

Pozwolę sobie dodać jedną różnicę:

tmux jest oparty na ncurses, podczas gdy screen nie rysuje dodatkowych elementów. Jeśli ktoś użyje emulatora terminala, który obsługuje przewijanie, będzie on przewijał ekran, ale nie tmux (przynajmniej w domyślnej konfiguracji). To samo dotyczy wyszukiwania i podobnych funkcji.

Maciej Piechotka
źródło
2
Nie miałem przewijania z ekranem jak ... kiedykolwiek? : /
souser12345
tak, mój TE obsługuje przewijanie i ekran go łamie ... Muszę przewijać za pomocą ekranu. -1 wydaje się niedokładne.
Xenoterracide
@xenoterracide: Hmm. Masz częściowo rację. Ekran na niektórych dystrybucjach / systemach (starszy Gentoo) nie psuje go, podczas gdy na niektórych (nowy Ubuntu) tak. Nie mam pojęcia dlaczego.
Maciej Piechotka
prawdopodobnie łatka ... nasze są wszystkie systemy 5,5 centów
ksenoterracid
6

Miałem problemy z uzyskaniem ekranu do obsługi utf-8 i 256 kolorów, ale tmux działał od razu po wyjęciu z pudełka.

zvolkov
źródło