Можно ли заставить Tmux оставаться в «режиме префикса», пока я не нажму Escape?

Можно ли заставить Tmux оставаться в «режиме префикса», пока я не нажму Escape?

Аналогично режимам Vim, я бы хотел, чтобы Tmux оставался в «префиксном режиме» (как он на самом деле называется?) до тех пор, пока я не нажму Escape, чтобы я мог сделать что-то вроде

Prefix h j + +

вместо

Prefix h Prefix j Prefix + Prefix +

и не нужно беспокоиться о таймерах или чрезмерном использовании аккордов.

решение1

Я опубликовал это какпроблемаи получил такой ответ:

Вы можете переназначить все свои клавиши, чтобы добавлять их switch-client -Tprefixв конец каждой последовательности команд, но автоматизированного способа сделать это не существует.

Проблема в том, что это не сработает, если команда выдаст ошибку, но вы можете обойти это, используя

Да, ошибка отменит последовательность команд, вы можете обойти это, используя run-shell, например

run "tmux mycmd; tmux switch-client -Tprefix"

Но это может скрыть ошибку от отображения.

Моя текущая конфигурация выглядит так:

bind c new-window \; switch-client -T prefix
bind . command-prompt \; switch-client -T prefix
bind , copy-mode \; switch-client -T prefix

# Vim style splits
bind s split-window -v \; switch-client -T prefix
bind v split-window -h \; switch-client -T prefix

# Double tab to cycle panes
bind C-a select-pane -t :.+ \; switch-client -T prefix

Насколько я понял, tmux использует разные контексты для разных привязок. Чтобы указать, в каком контексте использовать привязку, вы используете bind <key> -T <context>, где префикс — это значение по умолчанию. Вы можете переключать контекст с помощью switch-client -T <context>, поэтому мы повторно применяем префикс после каждой команды.

Недостатки этого метода:

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

Бонус!Вы можете добавить необычный индикатор, который будет весьма полезен, если вы долгое время находитесь в режиме префикса, используя что-то вроде

set -g status-right "#{?client_prefix,#[reverse]● #[noreverse],#[reverse]○ #[noreverse]}"

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