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 tmuxvon 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-keyBefehl 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-qaus 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-keyBefehls interpretiert , sondern als weiteres Argument, bind-keyum es zu veranlassen, einen zusammengesetzten Befehl als gebundenen Wert des C-qSchlü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"