Todd Freed ha ragione, il modo "corretto" per farlo è usare \;. Una specie di. Ma c'è un problema.
Vedete, unite una sequenza di comandi tmux insieme dando a tmux la congiunzione ;. Quindi, in un file proveniente da tmux, si potrebbe dire
new-session "monitor1" ; split-window -v "monitor2"
se, per qualche motivo, lo volevi tutto su una riga. Ora, si può dare che un'istruzione composta di una sola riga al tmuxcomando da una shell anche , ma la ;deve essere sfuggito in modo che la shell interpreta come un altro argomento per tmux. Quindi l'equivalente di quanto sopra dalla shell è
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Allo stesso modo, il bind-keycomando tmux accetta una serie di argomenti che sono il comando tmux e gli argomenti da eseguire quando si preme il tasto. Se volessi C-qlegarti alla sequenza sopra dall'interno di un file proveniente da tmux, diresti
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Qui siamo sfuggiti a ; tmux , in modo che tmux non lo interpreti come la fine del bind-keycomando, ma come un altro argomento per bind-keydirgli di formare un comando composto come valore associato della C-qchiave.
Quindi cosa succede quando vogliamo che tmux lo faccia dalla shell? Un sacco di fuga.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Per prima cosa, dobbiamo scappare l'uno \ e l'altro ;dalla shell , facendo in modo che la shell passi i due caratteri \;come argomento tmux. Questo quindi sfugge a ;da tmux, inducendolo ad assegnare l'intera istruzione composta come associazione di C-q.
Detto questo, se usi ripetutamente una complessa configurazione di tmux come questa, ti suggerisco di creare un file tmux per tenerlo in:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
E poi:
$ tmux source split-windows.tmux # (or even make an alias for this)
Sarà molto più facile da mantenere in questo modo.
\;:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"