Я отправил это как проблему и получил этот ответ:
Вы можете перепривязать все свои ключи, чтобы добавить 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]}"