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