Переназначить клавиши tmux для перемещения по панелям, как в vim.

Вопрос или проблема

Я перехожу между панелями в 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:

  1. Откройте файл .tmux.conf в редакторе вашей команды (vim, nano и т.д).
  2. Вставьте указанные выше команды конфигурации для связывания клавиш.
  3. Сохраните изменения и перезапустите tmux, чтобы новые конфигурации вступили в силу.

В результате, когда вы находитесь в tmux, сможете пользоваться навигацией по окнам, аналогичной вашему привычному vim стилю. Это значительно сократит утомительное переключение контекста и повысит эффективность вашей работы.

Заключение

Настройка команд в tmux под ваш привычный стиль работы в vim не только усиливает ваш опыт пользователя, но и повышает производительность процесса работы. Данная интеграция полезна для пользователей, которые часто переключаются между различными средами разработки и требуют единообразия в своих рабочих процессах. Следуя данной методике, вы сможете объединить ваши предпочтения работы в одной эффективной конфигурации.

Оцените материал
Добавить комментарий

Капча загружается...