Вопрос или проблема
Я перехожу между панелями в vim
, нажимая Ctrl+w
, отпускаю + стрелку (влево|вправо|вниз|вверх)
.
Я хочу изменить конфигурацию tmux
так, чтобы навигация по панелям была такой же, как в vim
, чтобы не переключаться контекст.
В настоящее время у меня следующая конфигурация для навигации по панелям в tmux
:
bind-key j select-pane -D
bind-key k select-pane -U
bind-key h select-pane -L
bind-key l select-pane -R
Мой глобальный префикс установлен на C-f
, поэтому я могу перемещаться между панелями, нажимая C-f + стрелку
.
Есть ли способ переназначить это на C-w + стрелку
, как в vim
?
Я пробовал что-то вроде этого, но это ни к чему не привело
bind -n C-w-j select-pane -D
bind -n C-w-k select-pane -U
bind -n C-w-h select-pane -L
bind -n C-w-l select-pane -R
Я неправильно понимаю, как работает составление клавиш в tmux
, но документация мало помогла.
man 1 tmux
, где описывается bind-key
, гласит:
Клавиши также могут быть привязаны в пользовательских таблицах клавиш, и команда
switch-client -T
может использоваться для переключения на них из команды привязки клавиш.
Релевантная часть о switch-client
[подчеркнутая мной]:
-T
устанавливает таблицу клавиш клиента; следующая клавиша от клиента будет интерпретироваться изkey-table
. Это может быть использовано для настройки нескольких префиксных клавиш, или для привязки команд к последовательностям клавиш.
Давайте назовем нашу новую пользовательскую таблицу клавиш Cw
. Мы хотим, чтобы Ctrl+w выбирал её, затем мы хотим, чтобы стрелочные клавиши в этой таблице выбирали панели соответствующим образом. Это:
bind-key -T root C-w switch-client -T Cw
bind-key -r -T Cw Right select-pane -R
bind-key -r -T Cw Left select-pane -L
bind-key -r -T Cw Up select-pane -U
bind-key -r -T Cw Down select-pane -D
Вам может понравиться использование этих привязок без -r
.
Ответ или решение
Для тех, кто знаком с использованием панели навигации в vim
, необходимость работы с терминальным мультиплексором tmux
может доставить определенные неудобства из-за различий в навигации по панелям. Обычно в vim
пользователи привыкают перемещаться по окнам с помощью команды Ctrl+w
, а затем стрелками. Это интуитивно и не требует дополнительного времени на адаптацию к новым раскладкам. В данной статье мы рассмотрим, как перенастроить tmux
таким образом, чтобы сохранилась аналогичная функциональность управления кластерами окон, как в vim
.
Теория
Основная концепция заключается в создании ключевой таблицы в tmux
, что позволит перенаправить управление между панелями командой Ctrl+w
(далее C-w
), а затем с использованием стрелок для перемещения. На данный момент, ваш конфигурационный файл tmux
может выглядеть следующим образом, если используется стандартная навигация через префикс (т.е. когда C-f
служит вводом команды):
bind-key j select-pane -D
bind-key k select-pane -U
bind-key h select-pane -L
bind-key l select-pane -R
С этой конфигурацией можно перемещаться между панелями в tmux
через комбинации C-f
плюс стрелочные клавиши. Однако, для масштабной интеграции с vim
, это не самый оптимальный вариант.
Пример
Для решения обозначенной проблемы, нам потребуется переопределить некоторые ключевые команды. tmux
позволяет использовать пользовательские таблицы клавиш, чтобы организовать навигацию по панели аналогично vim
. Рассмотрим пример изменений конфигурационного файла:
bind-key -T root C-w switch-client -T Cw
bind-key -r -T Cw Right select-pane -R
bind-key -r -T Cw Left select-pane -L
bind-key -r -T Cw Up select-pane -U
bind-key -r -T Cw Down select-pane -D
В этом случае, мы создаём пользовательскую таблицу Cw
, к которой обращаемся с помощью комбинации C-w
. После этого, стрелочные клавиши в данной таблице настроены на перемещение между окнами панели в предусмотренных направлениях: вправо, влево, вверх или вниз.
Применение
Теперь, когда мы уяснили процесс настройки, рассмотрим шаги внедрения данные изменений в ваш конфигурационный файл .tmux.conf
:
- Откройте файл
.tmux.conf
в редакторе вашей команды (vim
,nano
и т.д). - Вставьте указанные выше команды конфигурации для связывания клавиш.
- Сохраните изменения и перезапустите
tmux
, чтобы новые конфигурации вступили в силу.
В результате, когда вы находитесь в tmux
, сможете пользоваться навигацией по окнам, аналогичной вашему привычному vim
стилю. Это значительно сократит утомительное переключение контекста и повысит эффективность вашей работы.
Заключение
Настройка команд в tmux
под ваш привычный стиль работы в vim
не только усиливает ваш опыт пользователя, но и повышает производительность процесса работы. Данная интеграция полезна для пользователей, которые часто переключаются между различными средами разработки и требуют единообразия в своих рабочих процессах. Следуя данной методике, вы сможете объединить ваши предпочтения работы в одной эффективной конфигурации.