Scorrendo le domande che ho trovato su tmux (normalmente utilizzavo GNU Screen). La mia domanda è: quali sono i pro e i contro di ciascuno di essi. Soprattutto non ho trovato molto su tmux.
Scorrendo le domande che ho trovato su tmux (normalmente utilizzavo GNU Screen). La mia domanda è: quali sono i pro e i contro di ciascuno di essi. Soprattutto non ho trovato molto su tmux.
Risposte:
Dal loro sito Web :
- In che modo tmux è diverso dallo schermo GNU? Cos'altro offre?
tmux offre diversi vantaggi rispetto allo schermo:
- un modello client-server chiaramente definito: le finestre sono entità indipendenti che possono essere collegate contemporaneamente a più sessioni e visualizzate da più client (terminali), nonché spostate liberamente tra le sessioni all'interno dello stesso server tmux;
- un'interfaccia di comando coerente e ben documentata, con la stessa sintassi se utilizzata in modo interattivo, come associazione di tasti o dalla shell;
- facilmente scrivibile dalla shell;
- più buffer di pasta;
- scelta di layout chiave vi o emacs;
- un'opzione per limitare le dimensioni della finestra;
- una sintassi della riga di stato più utilizzabile, con la possibilità di visualizzare la prima riga di output di un comando specifico;
- una base di codice più pulita, moderna, facilmente espandibile, con licenza BSD.
Ci sono ancora alcune funzionalità incluse nella schermata che tmux omette:
- supporto seriale e telnet integrato; questo è gonfio ed è improbabile che venga aggiunto a tmux;
- supporto di piattaforme più ampio, ad esempio IRIX e HP-UX, e per terminali dispari.
<C-Left>
in vim
in tmux
.
Una differenza sta nel modo in cui i due agiscono quando più terminali sono collegati a una singola sessione.
Con lo schermo, la vista di ciascun terminale collegato è indipendente dalle altre. Con tmux, tutti i terminali collegati vedono la stessa cosa.
Supponi di avere due terminali collegati a una singola sessione di tmux. Se si digita ^B1 in un terminale, anche l'altro terminale passa alla finestra 1.
Quando si hanno due terminali collegati a una singola sessione dello schermo e si digita ^A1 in uno, non ha alcun effetto sull'altro terminale.
Questo si basa sulla mia esperienza con tmux 1.2; Vedo che 1.3 è uscito, ma non ho notato nulla nel log delle modifiche sul cambiamento di questo comportamento.
Se la tua sessione tmux originale viene chiamata 0
(impostazione predefinita), puoi farlo tmux new-session -t 0
) per avviare una nuova sessione indipendente connessa allo stesso set di finestre, che può quindi avere una propria vista.
tmux new -t 0
.
tmux è abbastanza nuovo rispetto allo schermo GNU. Vantaggi / Svantaggi è una domanda difficile, poiché entrambi i programmi risolvono approssimativamente lo stesso problema. tmux è concesso in licenza BSD mentre lo schermo è GNU GPL. Questo è importante per alcune persone.
lo schermo è più rappresentato (su Linux) al momento, cioè è più probabile che tu lo trovi su una determinata scatola di Linux rispetto a tmux. tmux è comunque più rappresentato su OpenBSD in quanto è incluso come parte dell'installazione di base.
Entrambi i programmi ti consentono di fare la stessa cosa, sebbene lo stato delle cose sia un po 'più complesso di così. Il passaggio tra i due non è eccessivamente complicato, poiché gran parte della funzionalità degli schermi ha trovato la sua strada in tmux, anche se se sei un utente esperto di uno, probabilmente troverai alcune frustrazioni quando passi all'altro.
Come con qualsiasi programma, dipende davvero dalle tue esigenze e con quali ti senti più a tuo agio. Provali entrambi e prova a giocare bene.
Per ulteriori informazioni su tmux, consultare https://tmux.github.io/
La differenza più grande nel mio uso è che nello schermo di Gnu puoi solo dividere i fotogrammi in orizzontale, mentre in Tmux puoi dividere sia in orizzontale che in verticale. Questo è un tipo di bersaglio mobile, anche se come ho detto qui che la divisione verticale sta entrando nello schermo .
A parte questo, le cose sono piatte.
Ho pensato di menzionare solo il byobu
wrapper disponibile per lo schermo che lo rende molto migliore fin dall'inizio. Non so se qualcosa di simile sia disponibile per tmux, ma ha byobu
reso il mio .screenrc solo una manciata di righe. Dai un'occhiata a questo breve articolo su byobu e schermate. La pagina del progetto per byobu descrive il nome che deriva da un termine giapponese per schermi decorativi multi-pannello che fungono da divisori pieghevoli. Inoltre, solo eseguirlo non danneggia le impostazioni dello schermo, quindi puoi provarlo in sicurezza. Una volta avviata la sessione byobu
, puoi riconnetterti liberamente usando screen
e non perdere comunque le personalizzazioni effettuate byobu
(quindi usalo solo per l'invocazione iniziale). I due vantaggi principali sono:
Non sto usando la parte dei tasti, ma trovo sicuramente utili le barre di stato.
Inoltre, potresti trovare utile Screen Vs tmux link. Penso che la maggior parte sia già menzionata dalle risposte esistenti.
byobu
, come questa risponde con il suo elenco di funzionalità.
byobu
, ma è semplice come eseguire il comando e trovarlo da solo (è guidato dal menu), poiché non confonde le impostazioni dello schermo esistenti. E ho reso la mia risposta un wiki della comunità, quindi sentiti libero di modificarlo.
Drench solleva un punto interessante: il comportamento predefinito di connettersi due volte alla stessa sessione è diverso in tmux. Tuttavia, se vuoi collegarti due volte e avere una vista indipendente delle finestre in quella sessione, inizia con tmux
tmux new-session -t <session name>
Ciò creerà una nuova sessione per te e alleggerirà le finestre della sessione già esistente. Se non hai nominato la tua prima sessione, puoi aggiungerne una con "rename-session".
Un grande svantaggio screen
è che non è sviluppato attivamente. Le pagine dei bug hanno quasi 200 oggetti non assegnati che risalgono a 5 anni fa.
tmux
ha anche alcuni problemi aperti, ma molto meno, ed è supportato più attivamente.
tmux è più recente e molte altre funzionalità.
Ho scoperto che un buon utilizzo dipende da una buona configurazione.
Uso vi (vim) per l'editing (ruby on rails) e ci sono alcune cose di installazione per farlo funzionare bene.
Ecco il mio file ~ / .tmux.conf con molte impostazioni utili:
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"
Mi prenderò la libertà di aggiungere una differenza:
tmux è basato su ncurses mentre lo schermo non disegna elementi aggiuntivi. Se qualcuno usa un emulatore di terminale che supporta lo / gli scorrimento / i, lo scorrimento con lo schermo ma non con tmux (almeno nella configurazione predefinita). Lo stesso vale per la ricerca e funzionalità simili.