Unter ~/.tmux.conf
avec
bind-key v split-window "vim"
Je peux lancer vim dans une fenêtre divisée.
Comment puis-je utiliser deux touches dans un tmux ? bind-key
?
Exemple :
bind-key vG split-window "vim +$"
Unter ~/.tmux.conf
avec
bind-key v split-window "vim"
Je peux lancer vim dans une fenêtre divisée.
Comment puis-je utiliser deux touches dans un tmux ? bind-key
?
Exemple :
bind-key vG split-window "vim +$"
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 utiliser celui-ci à la place :
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 unique de tablette de touches 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
Vous ne pouvez pas. tmux
n'autorise que les liaisons à une seule touche (soit seule, soit à l'aide de bind-key -n
ou en suivant la touche de préfixe).
Cependant, vous pouvez essayer de lier "v" à une invocation de la fonction command-prompt
:
bind-key v command-prompt "tmux-vim.bash %%"
donde 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 suffit de taper "G" et d'appuyer sur Entrée. "G" sera passé comme argument à la commande tmux-vim.bash
et que script s'occuperait de l'exécution des tmux
que vous vouliez (à l'origine) associer à "vG".
Comme l'a dit @chepner, vous ne pouvez pas faire cela directement . Ce que vous pouvez faire, c'est lier v
pour créer une liaison pour G
qui fait ce que vous voulez et se détache ensuite.
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 voulez que quelque chose soit lié à G
et quelque chose d'autre lié à vG
votre étape de déliaison doit rétablir la reliure d'origine.tmux
se mettra en défaut si votre .tmux.conf
comprend un bind-key
une déclaration trop longue. Si cela devient un problème, vous pouvez le contourner en mettant votre changement de contexte dans les scripts de bash et ensuite lier une touche pour exécuter ces scripts.Pour un exemple plus complexe, voir cette phrase .
Après 2015, oui, vous pouvez le faire.
Ils ajoutent un nouvel argument -T key-table
a switch-client
pour prendre en charge cette fonctionnalité. Voici la commande commit : https://github.com/tmux/tmux/commit/bded7437064c76dd6cf4e76e558d826859adcc79
Peut-être que cette fonctionnalité a été publiée dans la version 2.1, mais je n'ai pas vu de notes de publication à ce sujet.
Voici la façon d'archiver cet objectif :
tâche : faire quelque chose comme : bind-key vG split-window "vim +$" code :
bind-key -T prefix v switch-client -T prefix_v
bind-key -T prefix_v G split-window "vim +$"
Au-delà de la command-prompt
approche suggérée dans les autres réponses, vous pouvez avoir un deuxième ensemble de mappings 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 pourriez faire ce qui suit :
set -g prefix C-v
bind-key G split-window "vim +$"
à mettre en correspondance avec c-v g
au lieu de c-b vG
. L'inconvénient est qu'il fera de l'ombre à tout mappage par défaut, puisqu'il sera également accessible par l'intermédiaire de c-b g
.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.