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.
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.
Odpowiedzi:
- 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.
<C-Left>
w vim
w tmux
.
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 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.
tmux new -t 0
.
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/
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.
Pomyślałem, że wspomnę tylko o byobu
opakowaniu, 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 byobu
mó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 byobu
możesz swobodnie połączyć się z nią za pomocą screen
i nadal nie tracić żadnych dostosowań wykonanych przez byobu
(więc używaj jej tylko do pierwszego wywołania). Dwie główne zalety to:
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.
byobu
, takie jak odpowiedzi z listą funkcji.
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ć.
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”.
Jedną z głównych wad screen
jest 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.
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"
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.