40

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

2 ответа2

47

Вверх, вниз, влево и вправо (привязки на 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
3

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .