Dans ~/.tmux.conf
, avec
bind-key v split-window "vim"
Je peux lancer vim dans une fenêtre divisée.
Comment puis-je utiliser deux clés dans un tmux bind-key
?
Exemple:
bind-key vG split-window "vim +$"
Dans ~/.tmux.conf
, avec
bind-key v split-window "vim"
Je peux lancer vim dans une fenêtre divisée.
Comment puis-je utiliser deux clés dans un tmux bind-key
?
Exemple:
bind-key vG split-window "vim +$"
Réponses:
Vous ne pouvez pas. tmux
n'autorise que les liaisons à clé unique (seules, en utilisant bind-key -n
ou en suivant la clé de préfixe).
Cependant, vous pouvez essayer de lier "v" à une invocation de command-prompt
:
bind-key v command-prompt "tmux-vim.bash %%"
où tmux-vim.bash
ressemble quelque chose comme
if [ $1 = "G" ]; then
tmux split-window "vim +$"
fi
Ensuite, après avoir tapé v pour accéder à l'invite de commande, il vous suffira de taper "G" et d'appuyer sur Entrée. "G" serait passé comme argument à tmux-vim.bash
, et ce script se chargerait d'exécuter la tmux
commande que vous vouliez (à l'origine) associer à "vG".
Comme @chepner l'a dit, vous ne pouvez pas le faire directement . Ce que vous pouvez faire est v
de créer une liaison G
qui crée ce que vous voulez, puis qui se dissocie.
bind-key v bind-key -n G split-window "vim +$" \\; unbind -n G
Il y a deux choses importantes à noter avec cette approche:
G
); Si vous souhaitez que quelque chose soit lié à G
et que quelque chose d'autre soit lié à vG
votre étape de dégroupage, vous devez restaurer la liaison d'origine.tmux
segfault si vous incluez .tmux.conf
une bind-key
déclaration trop longue. Si cela devient un problème, vous pouvez contourner ce problème en plaçant votre changement de contexte dans des scripts bash, puis lier une clé pour exécuter ces scripts.Pour un exemple plus compliqué, voyez cet article .
Au-delà de l' command-prompt
approche proposée dans les autres réponses, vous pouvez avoir un deuxième ensemble de mappages en utilisant un préfixe différent:
prefix key
Set the key accepted as a prefix key.
prefix2 key
Set a secondary key accepted as a prefix key.
Ainsi, vous pouvez faire ce qui suit:
set -g prefix C-v
bind-key G split-window "vim +$"
mapper à c-v g
au lieu de c-b vG
. L'inconvénient est qu'il occultera tout mappage par défaut, car il sera également accessible via c-b g
.
Il n'y a qu'une seule bonne solution pour cela:
# you can use "vim +$" as well, but I don't think that +$ prefix have any sense without the file path argument...
bind -T multiKeyBindings G split-window "vim"
bind v switch-client -T multiKeyBindings
Si vous voulez avoir la possibilité de passer des arguments personnalisés, vous devriez plutôt utiliser celui-ci:
bind -T multiKeyBindings G command-prompt 'split-window "vim %%"'
bind v switch-client -T multiKeyBindings
Plus d'exemples:
# Toggle maximizing of current pane by typing PREFIX mm
bind -T multiKeyBindings m resize-pane -Z
bind m switch-client -T multiKeyBindings
# or without PREFIX
bind -T multiKeyBindings m resize-pane -Z
bind -n m switch-client -T multiKeyBindings
# rename current window by typing PREFIX mr
bind -T multiKeyBindings r command-prompt 'rename-window %%'
bind -n m switch-client -T multiKeyBindings
Vous devez utiliser un nom de tablette unique pour chaque liaison multiple. Exemple:
bind -T multiKeyBinding1 G split-window "vim"
bind v switch-client -T multiKeyBinding1
bind -T multiKeyBinding2 m resize-pane -Z
bind -n m switch-client -T multiKeyBinding2
bind -c
+command -c