4

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

Prefix h j + +

вместо

Prefix h Prefix j Prefix + Prefix +

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

1 ответ1

2

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

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

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