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 tmux
comando 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-key
comando tmux accetta una serie di argomenti che sono il comando tmux e gli argomenti da eseguire quando si preme il tasto. Se volessi C-q
legarti 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-key
comando, ma come un altro argomento per bind-key
dirgli di formare un comando composto come valore associato della C-q
chiave.
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"