Мой ~/.tmux.conf
:
set -g prefix C-a
unbind C-b
bind C-a send-prefix
bind-key o split-window -v
bind-key e split-window -h
bind-key w kill-pane
(чтобы сделать клавиши управления такими же, как в GNOME Teminator)
Ситуация: после горизонтального разделения окна на 2 панели, переключения на панель со стрелкой Ctrl+ a Up, мне нужно подождать некоторое время (2-3 секунды), чтобы увидеть команды истории оболочки в этой панели. Потому что если я нажму еще Upраз, то он переключится обратно на другую панель вместо того, чтобы показать мне команду истории оболочки. Как мне это отключить?
решение1
Up, Down, Left и Right ( select-pane
привязки; и Control- и Meta- тех же клавиш для resize-pane
) являются «повторяемыми» привязками по умолчанию (созданными через bind-key -r
). После ввода префиксной клавиши и любой одной повторяемой клавиши вы можете нажать любую другую повторяемую клавишу (без необходимости снова вводить префикс) в течение количества миллисекунд, указанных в repeat-time
параметре сеанса (по умолчанию 500 мс).
Текущее значение можно проверить repeat-time
с помощью следующих команд оболочки:
tmux show-options -g | grep \^repeat-time # global
tmux show-options | grep \^repeat-time # this session
Если вы хотите отключить повтор для текущего сеанса, введите префикс, двоеточие, и введите следующую команду:
set-option repeat-time 0
Или, возможно, вы сможете найти удобное ненулевое значение. Если у вас действительно есть значение около 2000 (т. е. 2s), то я бы предположил, что оно устанавливается в /etc/tmux.conf
.
Если вы хотите отключить повторение (или изменить время ожидания) для всех сеансов, то задайте глобальное значение с помощью этой команды:
set-option -g repeat-time 0
Если вы установили значение для сеанса, вам нужно будет отменить его, прежде чем глобальное значение вступит в силу в этом сеансе ( set-option -u repeat-time
). Вы можете установить глобальное значение через свой, .tmux.conf
если вы предпочитаете оставить его отключенным «навсегда».
Если у вас проблемы только с Up, вы можете перепривязать его без -r
:
bind-key Up select-pane -U
решение2
Вы также можете отключить повтор для определенных сочетаний клавиш, если хотите. Например, сочетания клавиш по умолчанию для переключения между панелями сводятся к следующему:
bind-key -r Up select-pane -U
bind-key -r Down select-pane -D
bind-key -r Left select-pane -L
bind-key -r Right select-pane -R
Вы можете воссоздать их без -r
флага, например
bind-key Up select-pane -U
bind-key Down select-pane -D
bind-key Left select-pane -L
bind-key Right select-pane -R
Лично я предпочитаю, чтобы переключение панелей было неповторяемым. Повторение удобно, если у вас есть окно, разбитое на множество маленьких панелей, но это может привести к конфликтам клавиш (как вы описали) с приложениями, запущенными в этих панелях (например, история оболочки, vim и т. д.), и у меня обычно не больше 2 панелей на окно. Но каждому свое.