Todd Freed está certo, a maneira "correta" de fazer isso é usar \;
. Tipo de. Mas há um obstáculo.
Você vê, você junta uma sequência de comandos tmux dando a tmux a conjunção ;
. Assim, em um arquivo originado pelo tmux, você pode dizer
new-session "monitor1" ; split-window -v "monitor2"
se, por algum motivo, você quisesse tudo em uma linha. Agora, você pode dar essa instrução composta de uma linha para o comando tmux
de um shell também mas o ;
deve ser escapado para que o shell interprete como outro argumento para tmux
. Assim, o equivalente do acima da casca é
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Da mesma forma, o comando tmux bind-key
usa uma série de argumentos que são o comando e os argumentos do tmux para serem executados quando a tecla é pressionada. Se você quisesse vincular C-q
à sequência acima de dentro de um arquivo originado pelo tmux, você diria
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Aqui escapamos do ;
do tmux , para que o tmux não o interprete como o fim do comando bind-key
, mas como outro argumento para bind-key
contando isso para formar um comando composto como o valor vinculado da chave C-q
.
Então o que acontece quando queremos fazer o tmux fazer isso a partir do shell? Um monte de fugir.
$ tmux bind-key -n C-q new-session "monitor1" \\; split-window -v "monitor2"
Primeiro, temos que escapar o \
e o ;
cada do shell , fazendo com que o shell passe os dois caracteres \;
como um argumento para tmux
. Isso, então, escapa do ;
do tmux, fazendo com que ele atribua toda a instrução composta como a ligação de C-q
.
Agora, tudo isso dito, se você usar uma configuração complexa do tmux como esta repetidamente, sugiro que você crie um arquivo tmux para mantê-lo em:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
E então:
$ tmux source split-windows.tmux # (or even make an alias for this)
Vai ser muito mais fácil manter isso.