Todd Freed hat recht, der "richtige" Weg, dies zu tun, ist die Verwendung \;
. Art von. Aber es gibt einen Haken.
Sie fügen eine Folge von tmux-Befehlen zusammen, indem Sie tmux die Konjunktion geben ;
. In einer Datei, die von tmux stammt, könnte man also sagen
new-session "monitor1" ; split-window -v "monitor2"
wenn Sie das aus irgendeinem Grund alles in einer Zeile haben wollten. Jetzt können Sie diese einzeilige zusammengesetzte Anweisung auch tmux
von einer Shell an den Befehl übergeben, aber das ;
muss maskiert werden, damit die Shell es als ein weiteres Argument für interpretiert tmux
. Somit ist das Äquivalent des Obigen aus der Schale
$ tmux new-session "monitor1" \; split-window -v "monitor2"
In ähnlicher Weise benötigt der bind-key
Befehl tmux eine Reihe von Argumenten, bei denen es sich um den Befehl tmux handelt, und Argumente, die ausgeführt werden, wenn die Taste gedrückt wird. Wenn Sie sich C-q
aus einer von tmux bereitgestellten Datei an die obige Sequenz binden möchten, würden Sie sagen
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Hier haben wir das Kommando ;
von tmux umgangen , so dass tmux es nicht als Ende des bind-key
Befehls interpretiert , sondern als weiteres Argument, bind-key
um es zu veranlassen, einen zusammengesetzten Befehl als gebundenen Wert des C-q
Schlüssels zu bilden.
Was passiert also, wenn wir tmux dazu bringen wollen, das von der Shell aus zu tun? Eine ganze Menge zu entkommen.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Zuerst müssen wir das \
und das ;
jeweils aus der Shell entfernen , wodurch die Shell die beiden Zeichen \;
als Argument an übergibt tmux
. Dies entgeht dann dem ;
Befehl tmux, wodurch die gesamte zusammengesetzte Anweisung als Bindung von zugewiesen wird C-q
.
Nun, wenn Sie ein komplexes tmux-Setup wie dieses wiederholt verwenden, würde ich vorschlagen, dass Sie eine tmux-Datei erstellen, um diese zu speichern:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Und dann:
$ tmux source split-windows.tmux # (or even make an alias for this)
Es wird viel einfacher sein, so zu bleiben.
\;
:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"