В ~/.tmux.conf
, с
bind-key v split-window "vim"
Я могу запустить vim в разделенном окне.
как я могу использовать два ключа в bind-key
tmux?
Пример:
bind-key vG split-window "vim +$"
В ~/.tmux.conf
, с
bind-key v split-window "vim"
Я могу запустить vim в разделенном окне.
как я могу использовать два ключа в bind-key
tmux?
Пример:
bind-key vG split-window "vim +$"
Ты не можешь. tmux
допускает только привязки одним ключом (либо отдельно, либо с помощью bind-key -n
, либо после ключа префикса).
Тем не менее, вы можете попробовать связать "v" с вызовом command-prompt
:
bind-key v command-prompt "tmux-vim.bash %%"
где tmux-vim.bash
выглядит примерно так
if [ $1 = "G" ]; then
tmux split-window "vim +$"
fi
Затем, после ввода v, чтобы попасть в командную строку, вам нужно просто набрать "G" и нажать Enter. "G" будет передан в качестве аргумента tmux-vim.bash
, и этот сценарий позаботится о выполнении команды tmux
вы (изначально) хотели связать с "vG".
Как сказал @chepner, вы не можете сделать это напрямую. Что вы можете сделать, так это связать v
чтобы создать привязку для G
которая делает то, что вы хотите, а затем сама себя связывает.
bind-key v bind-key -n G split-window "vim +$" \\; unbind -n G
При таком подходе следует отметить несколько важных моментов:
G
); Если вы хотите, чтобы что-то было связано с G
а что-то еще связано с vG
ваш шаг отмены привязки должен восстановить исходную привязку.tmux
будет segfault, если ваш .tmux.conf
содержит слишком длинную инструкцию bind-key
. Если это становится проблемой, вы можете обойти это, включив переключение контекста в сценарии bash, а затем связать ключ для запуска этих сценариев.Для более сложного примера см. Эту суть.
Помимо подхода command-prompt
предложенного в других ответах, у вас может быть второй набор сопоставлений, использующий другой префикс:
prefix key
Set the key accepted as a prefix key.
prefix2 key
Set a secondary key accepted as a prefix key.
Таким образом, вы можете сделать следующее:
set -g prefix C-v
bind-key G split-window "vim +$"
отобразить в c-v g
вместо c-b vG
. Недостатком является то, что он будет скрывать любое отображение по умолчанию, так как он также будет доступен через c-b g
.
Для этого есть только одно правильное решение:
# 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
Если вы хотите, чтобы возможность передавать пользовательские аргументы, вы должны использовать этот вместо:
bind -T multiKeyBindings G command-prompt 'split-window "vim %%"'
bind v switch-client -T multiKeyBindings
Больше примеров:
# 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
Вы должны использовать уникальное имя планшета для каждого сочетания клавиш. Пример:
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