Todd Freed a raison, la méthode "correcte" consiste à utiliser cette méthode \;
. Sorte de. Mais il y a un problème.
Vous voyez, vous joignez une séquence de commandes tmux ensemble en donnant la conjonction à tmux ;
. Ainsi, dans un fichier créé par tmux, vous pourriez dire
new-session "monitor1" ; split-window -v "monitor2"
si, pour une raison quelconque, vous vouliez tout cela sur une seule ligne. Maintenant, vous pouvez donner cette instruction composée d' une ligne à la tmux
commande à partir d' une coquille aussi , mais le ;
doit être échappé pour que les interprète shell comme un autre argument en faveur tmux
. Ainsi, l’équivalent de ce qui précède de la coque est
$ tmux new-session "monitor1" \; split-window -v "monitor2"
De même, la bind-key
commande tmux prend une série d'arguments qui sont la commande tmux et les arguments à exécuter lorsque la touche est enfoncée. Si vous souhaitez lier C-q
la séquence ci-dessus à partir d'un fichier créé par tmux, vous pouvez dire
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Ici, nous avons échappé à ;
from tmux , de sorte que tmux ne l'interprète pas comme la fin de la bind-key
commande, mais comme un argument supplémentaire pour lui demander bind-key
de former une commande composée comme la valeur liée de la C-q
clé.
Alors que se passe-t-il lorsque nous voulons que tmux le fasse depuis le shell? Beaucoup d'échapper.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Premièrement, nous devons échapper le \
et le ;
chacun du shell , le shell transmettant les deux caractères \;
comme argument tmux
. Cela échappe ensuite à ;
tmux, ce qui lui permet d’affecter la totalité de la déclaration composée à la liaison de C-q
.
Maintenant, tout ceci étant dit, si vous utilisez une configuration complexe de tmux comme celle-ci à plusieurs reprises, je vous conseillerais de créer un fichier tmux pour le conserver:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Et alors:
$ tmux source split-windows.tmux # (or even make an alias for this)
Ce sera beaucoup plus facile à maintenir de cette façon.
\;
:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"
La vraie réponse est donc: vous enchaînez les commandes avec une barre oblique inverse suivie d'un point-virgule.
Vous pouvez mettre cela dans votre tmux.conf ou exécuter depuis l'invite tmux ":"
la source
Vous pouvez le faire avec une petite solution de contournement. Semblable à la réponse suggérant un script à exécuter (qui gère bien votre cas), cela peut généralement être fait en utilisant "run-shell" et en appelant tmux lui-même en tant que commande shell.
qui enverra les clés 'xyz', la commande 'clear-history' de tmux, puis appellera le shell intégré 'clear'.
La chaîne entière est simplement une séquence de commandes shell multiples.
la source
Vous pouvez ajouter quelque chose comme ceci aux raccourcis clavier de votre
.tmux.conf
fichier:Et en
tmux-new-session.sh
vous pouvez avoir:la source
Tout ce qui est montré ici ne fonctionnera pas, car
exécutera la commande2 immédiatement et q ne sera lié qu'à send-keys "command1"
Voici la solution:
Dans le fichier ~ / .tmux / reload.tmux, entrez plusieurs commandes telles que:
la source