2012-09-17 5 views
12

In tmux habe ich ein Layout mit 3 Spalten und 2 Zeilen, die oberste Zeile ist SSH-Verbindung zu allen meinen Server und die Unterseite ist alle die gleichen Server oben ausgeführt.tmux einige, aber nicht alle Fenster synchronisieren

Ich versuche, die obere Reihe zu synchronisieren, also wenn ich einen Befehl gebe, kopieren alle drei Scheiben den gleichen Befehl, ich versuchte Synchronisierscheiben, aber wie die man Seiten sagt, wird es die Befehle durch alle Scheiben laufen lassen, die dann Verwüstung spielen mit meinem ganzen 'Top' in der unteren Reihe.

gibt es sowieso eine Reihe von Scheiben zu synchronisieren?

+8

Nicht wirklich die Lösung, aber jedes Fenster in einem anderen Modus (z. Uhrmodus, Kopiermodus, Hilfe anzeigen) reagiert nicht auf Tastenanschläge. Wenn Sie alle außer ein paar Scheiben synchronisieren möchten, funktioniert das ziemlich gut. –

+0

Ich dachte darüber nach, wie man das macht ... Ich dachte über eine verschachtelte tmux-Sitzung nach –

+0

@EddSteel Eigentlich ist es eine bessere Lösung als die einzige hier gepostete Antwort. Netter Tipp! – mostruash

Antwort

8

Es ist nicht genau das, was Sie suchen, aber es ist ziemlich nah. Die Idee ist es, einen Schlüssel zu einem Satz von Befehlen zu binden an:

  1. Aufforderung für den Befehl
  2. Verwenden ‚select-pane‘ ausführen, um den ersten Spitzenbereich
  3. Use ‚send-Tasten zur Auswahl 'führen Sie den Befehl
  4. Wiederholen Sie die Schritte 2 und 3 für andere Top-Level-Scheiben

Hier ist, wie der Befehl wie

sieht
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 " 

wird nach einer kompletten wir beispielsweise Setup die 6 Scheiben, 2 Reihen von je 3:

$ 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' zu einem Satz von TMux Befehle, die Ihre bash Befehl akzeptieren und es zu einigen Scheiben senden:

: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 " 

Nun, wenn Sie Cb R treffen, werden Sie für einen Befehl

Prompt to enter command

aufgefordert,

Das wird nur in den oberen 3 Scheiben ausgeführt