Как уменьшить время ожидания между ключом префикса и ключом команды в tmux?

45

Мой ~/.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снова, он переключится обратно на другую панель вместо того, чтобы показывать мне команду истории оболочки. Как я могу отказаться от этого?

кванты
источник
Потенциально полезная альтернатива - использовать CTRL + B q, это показывает номера окон в tmux. Нажатие CTRL + B q <номер> приведет вас к этому окну, вверх / вниз будут доступны сразу. Вы должны ввести число после q довольно быстро. Есть тайм-аут, контролирующий это тоже.
Spacen Jasset

Ответы:

53

Вверх, вниз, влево и вправо ( 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 (то есть 2 с), то я думаю, оно устанавливается /etc/tmux.conf.

Если вы хотите отключить повторение (или изменить время ожидания) для всех ваших сеансов, установите глобальное значение с помощью этой команды:

set-option -g repeat-time 0

Если вы установили значение для сеанса, вам нужно будет сбросить его, прежде чем глобальное значение вступит в силу в этом сеансе ( set-option -u repeat-time). Вы можете установить глобальное значение через свой, .tmux.confесли вы предпочитаете оставить его «навсегда».

Если у вас есть проблемы только с Up, вы можете перепривязать его без -r:

bind-key Up select-pane -U
Крис Джонсен
источник
4

Вы также можете отключить повторение для определенных сочетаний клавиш, если хотите. Например, привязки по умолчанию для переключения между панелями сводятся к:

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 панелей на окно. Но каждому свое.

иван
источник