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

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

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

Связанный контент