Todd Freed tiene razón, la forma "correcta" de hacerlo es mediante el uso \;
. Más o menos. Pero hay un inconveniente.
Verá, se une a una secuencia de comandos tmux dando tmux la conjunción ;
. Por lo tanto, en un archivo de tmux, podría decir
new-session "monitor1" ; split-window -v "monitor2"
si, por alguna razón, quisieras eso en una sola línea. Ahora, se puede dar esa instrucción compuesta de una línea para el tmux
comando desde un shell también , pero el ;
debe ser escapado para que el shell lo interpreta como otro argumento a favor tmux
. Por lo tanto, el equivalente de lo anterior de la carcasa es
$ tmux new-session "monitor1" \; split-window -v "monitor2"
De manera similar, el bind-key
comando tmux toma una serie de argumentos que son el comando tmux y los argumentos que se ejecutan cuando se presiona la tecla. Si quisieras enlazar C-q
a la secuencia anterior desde dentro de un archivo originado por tmux, dirías
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Aquí hemos escapado ;
de tmux , para que tmux no lo interprete como el final del bind-key
comando, sino como otro argumento para bind-key
decirle que forme un comando compuesto como el valor enlazado de la C-q
clave.
Entonces, ¿qué sucede cuando queremos que tmux haga eso desde el shell? Mucho escape.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Primero, tenemos que escapar del \
y del ;
cada del shell , haciendo que el shell pase los dos caracteres \;
como argumento a tmux
. Esto luego escapa ;
de tmux, lo que hace que asigne toda la declaración compuesta como el enlace de C-q
.
Ahora, dicho todo esto, si usa una configuración compleja de tmux como esta repetidamente, le sugiero que cree un archivo tmux para mantenerlo en:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Y entonces:
$ tmux source split-windows.tmux # (or even make an alias for this)
Será mucho más fácil mantenerlo así.
\;
:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"