Переназначьте клавиши 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 + arrowkey.

Есть ли способ, как я могу переназначить это на C-w + arrowkey, как в 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.

.

Ответ или решение

Переназначение клавиш в tmux для навигации по панелям аналогично тому, как это сделано в vim, — это задача, которая требует детального понимания возможностей конфигурации tmux. OBS (N-ов, С-евер, И-дет-ак переопределяет команду, позволяя использовать комбинации клавиш, более естественные и удобные для пользователей vim, тем самым обеспечивая бесшовный переход между двумя инструментами и минимизируя необходимость переключения контекста.

Теория:

Vim и tmux — два мощных инструмента, часто используемых профессионалами в сфере ИТ для редактирования текста и многозадачности в терминале соответственно. Одной из ключевых особенностей vim является возможность навигации между открытыми буферами или окнами с использованием комбинации клавиш <C-w> (Ctrl+w), за которой следуют стрелки или другие клавиши. В tmux, в свою очередь, навигация между панелями обычно осуществляется через префиксную клавишу, за которой следует определённая команда. Настраивая tmux для использования сочетаний клавиш, аналогичных vim, можно значительно упростить рабочий процесс и снизить когнитивную нагрузку.

Пример:

Вопрос, который был задан, включает текущее состояние конфигурации пользователя с привязками клавиш для навигации между панелями (j, k, h, и l) и настройку глобального префикса, установленного как <C-f>. Пользователь хочет изменить эту настройку, чтобы для навигации по панелям в tmux использовалось аналогичное vim сочетание <C-w> с последующими стрелками. Однако простая переопределение клавиш не работает, так как не учитывает необходимость переключения на пользовательскую таблицу клавиш.

Применение:

Чтобы достигнуть желаемого поведения в tmux, вам нужно создать пользовательскую таблицу клавиш, в которую вы сможете переключиться с помощью <C-w>, а затем определить стрелочные клавиши для навигации в этой таблице. Это может быть реализовано с помощью следующей конфигурации:

# Определяем новую таблицу клавиш 'Cw'
bind-key    -T root C-w   switch-client -T Cw

# Определяем клавиши навигации в таблице '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

Давайте рассмотрим, как это работает. При нажатии <C-w> в таблице root происходит переключение на таблицу Cw. В этой таблице стрелки влево, вправо, вверх и вниз привязаны к командам перемещения по панелям. Префикс -T root в первой команде указывает, что данный биндинг активен в основной таблице команд, а ключ -T Cw в последующих командах обозначает, что данные биндинги применяются именно в пользовательской таблице Cw.

Примечание: Опция -r в биндингах для стрелок позволяет сохранять клавиши в режиме повторения, то есть, удерживая стрелку, вы можете быстро перемещаться между панелями.

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

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

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

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