
Аналогично режимам 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]}"