2012-09-17 5 views
12

In tmux ho un layout a 3 colonne e 2 righe, la riga superiore è la connessione ssh a tutti i miei server e in basso tutti gli stessi server sono in esecuzione.tmux sincronizza alcuni ma non tutti i riquadri

Sto provando a sincronizzare la riga superiore, quindi se inserisco un comando, tutti e tre i riquadri copiano lo stesso comando, ho provato a sincronizzare i riquadri, ma siccome le pagine man dicono che eseguiranno i comandi attraverso tutti i riquadri che poi riproducono il caos con tutta la mia "cima" in fondo alla fila.

c'è comunque la sincronizzazione di un set di riquadri?

+8

Non proprio la soluzione, ma qualsiasi riquadro impostato in una modalità diversa (ad es. modalità orologio, modalità copia, visualizzazione della guida) non rispondono ai tratti dei tasti. Se hai bisogno di sincronizzare tutti, tranne un paio di pannelli, questo funziona abbastanza bene. –

+0

Stavo pensando a come farlo ... Stavo considerando una sessione tmux annidata –

+0

@EddSteel In realtà è una soluzione migliore rispetto all'unica risposta pubblicata qui. Bel consiglio! – mostruash

risposta

8

Non è esattamente quello che stai cercando, ma è molto vicino. L'idea è quella di associare una chiave per una serie di comandi per:

  1. richiesta per il comando per eseguire
  2. Usa 'select-pane' per scegliere il primo riquadro livello superiore
  3. Usa 'inviare-keys 'per eseguire il comando
  4. Ripetere i punti 2 e 3 per gli altri vetri di alto livello

Ecco come il comando assomiglia

bind R command-prompt -p "Command :" "select-pane -t 0 \; send-keys "%1" C-m \; select-pane -t 2 \; send-keys "%1" C-m \; select-pane -t 4 \; send-keys "%1" C-m " 

che segue è un esempio completo, di impostazione di lasciare che i 6 riquadri, 2 file di 3 ciascuno:

$ tmux new -s 'top_n_tail' \; split-window -h \; split-window -h \; select-layout even-horizontal \; detach 
$ tmux att -t 'top_n_tail' \; select-pane -t 0 \; split-window \; detach 
$ tmux att -t 'top_n_tail' \; select-pane -t 2 \; split-window \; detach 
$ tmux att -t 'top_n_tail' \; select-pane -t 4 \; split-window 

On tmux prompt (Cb :) bind 'R' per una serie di comandi tmux che accetta il vostro comando bash e inviarlo ad alcuni riquadri:

:bind R command-prompt -p "Command :" "select-pane -t 0 \; send-keys "%1" C-m \; select-pane -t 2 \; send-keys "%1" C-m \; select-pane -t 4 \; send-keys "%1" C-m " 

Ora, quando si colpisce Cb R, ti verrà richiesto per un comando

Prompt to enter command

Che verrà eseguito solo nei primi 3 riquadri