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"
Entonces, la verdadera respuesta es: encadenar comandos con una barra invertida seguida de un punto y coma.
Lo pondría en su tmux.conf, o lo ejecutaría desde el indicador tmux ":"
fuente
Puede hacer esto con una pequeña solución. Similar a la respuesta que sugiere un script para ejecutar (que maneja bien su caso), se puede hacer más generalmente usando "run-shell" y llamando a tmux como el comando de shell.
que enviará las teclas 'xyz', el comando tmux 'clear-history' y luego llamará al shell 'clear' incorporado.
La cadena completa es solo una secuencia de comandos de shell múltiple.
fuente
Puede agregar algo como esto a las asociaciones de teclas a su
.tmux.conf
archivo:Y en
tmux-new-session.sh
ti puedes tener:fuente
Todo lo que se muestra aquí no funcionará, porque esto
ejecutará el comando2 inmediatamente y q estará vinculado solo a las teclas de envío "comando1"
Aquí está la solución:
En el archivo ~ / .tmux / reload.tmux pon múltiples comandos como:
fuente