Todd Freed está certo, a maneira "correta" de fazer isso é usando \;
. Tipo de. Mas há um problema.
Veja bem, você junta uma sequência de comandos tmux, dando ao 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 isso em uma linha. Agora, você pode dar de que uma linha instrução composta para o tmux
comando de um shell também , mas o ;
deve ser escapado para que os interpreta shell como um outro argumento para tmux
. Assim, o equivalente ao anterior da casca é
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Da mesma forma, o bind-key
comando tmux utiliza uma série de argumentos, que são o comando tmux e os argumentos a serem executados quando a tecla é pressionada. Se você deseja vincular C-q
a sequência acima a partir de um arquivo originado pelo tmux, diria
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Aqui escapamos ;
do tmux , para que o tmux não o interprete como o final do bind-key
comando, mas como outro argumento para bind-key
dizer a ele para formar um comando composto como o valor vinculado da C-q
chave.
Então, o que acontece quando queremos que o tmux faça isso a partir do shell? Um monte de fuga.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Primeiro, temos que escapar do shell \
e de;
cada um deles , fazendo com que o shell passe os dois caracteres como argumento para . Isso então escapa do from tmux, fazendo com que ele atribua toda a instrução composta como a ligação de .\;
tmux
;
C-q
Agora, tudo o que foi dito, se você usar uma configuração complexa do tmux como esta repetidamente, sugiro que você crie um arquivo tmux para mantê-lo:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
E depois:
$ tmux source split-windows.tmux # (or even make an alias for this)
Vai ser muito mais fácil manter isso.
\;
:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"
Portanto, a resposta real é: você encadeia comandos com uma barra invertida seguida por um ponto e vírgula.
Você colocaria isso no seu tmux.conf ou executaria a partir do prompt tmux ":"
fonte
Você é capaz de fazer isso com uma pequena solução alternativa. Semelhante à resposta que sugere um script para ser executado (que lida bem com seu caso), geralmente pode ser feito usando "run-shell" e chamando o próprio tmux como o comando do shell.
que envia chaves 'xyz', comando tmux 'clear-history' e depois chama o shell 'clear' embutido.
A sequência inteira é apenas uma sequência de comandos com vários shell.
fonte
Você pode adicionar algo parecido com isto às combinações de teclas do seu
.tmux.conf
arquivo:E em
tmux-new-session.sh
você pode ter:fonte
Tudo mostrado aqui não funcionará, porque isso
executará o comando2 imediatamente eq será vinculado apenas às chaves de envio "command1"
Aqui está a solução:
No arquivo ~ / .tmux / reload.tmux, coloque vários comandos como:
fonte