Todd Freed a raison, la manière "correcte" de procéder est d'utiliser \;
. En quelque sorte. Mais il y a un hic.
Vous voyez, vous joignez une séquence de commandes tmux en donnant à tmux la conjonction ;
. Ainsi, dans un fichier généré par tmux, vous pourriez dire
new-session "monitor1" ; split-window -v "monitor2"
si, pour une raison ou pour une autre, vous vouliez tout cela sur une seule ligne. Maintenant, vous pouvez donner cette déclaration composée d'une seule ligne à l'élément tmux
à partir d'un Shell également mais les ;
doit être échappé pour que le Shell l'interprète comme un autre argument de la fonction tmux
. L'équivalent de ce qui précède dans le Shell est donc le suivant
$ tmux new-session "monitor1" \; split-window -v "monitor2"
De même, la fonction tmux bind-key
prend une série d'arguments qui sont la commande tmux et les arguments à exécuter lorsque la touche est pressée. Si vous voulez lier C-q
à la séquence ci-dessus à partir d'un fichier généré par tmux, vous diriez
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Ici, nous avons échappé à la ;
à partir de tmux afin que tmux ne l'interprète pas comme la fin de la chaîne de caractères. bind-key
mais en tant qu'argument supplémentaire à la commande bind-key
en lui demandant de former une commande composée en tant que valeur liée de l'élément C-q
clé.
Que se passe-t-il lorsque nous voulons que tmux fasse cela à partir du Shell ? Un grand nombre d'échappements.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Tout d'abord, nous devons échapper à la \
et les ;
chacun de la Shell Le Shell transmet alors les deux caractères suivants \;
comme argument à tmux
. Ce dernier échappe alors à la ;
de tmux, ce qui a pour effet d'assigner l'ensemble de l'instruction composée en tant que liaison de C-q
.
Cela dit, si vous utilisez régulièrement une configuration tmux complexe comme celle-ci, je vous suggère de créer un fichier tmux pour la conserver :
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Et puis.. :
$ tmux source split-windows.tmux # (or even make an alias for this)
Il sera ainsi beaucoup plus facile à maintenir.