Подтвердить что ты не робот

Tmux: как переключить опции "on" и "off" с помощью той же клавиши

Это немного моего tmux.conf

cat tmux.conf
...
bind a set-window-option synchronize-panes on
bind b set-window-option synchronize-panes off

Как вы можете видеть, параметры синхронизации и несинхронизации для панелей привязаны к двум различным ключам. Можно ли переключать синхронизацию/несинхронизм с одним и тем же ключом?

4b9b3361

Ответ 1

Если вы явно не укажете "on" или "off", опция будет переключена. Достаточно следующего:

bind a set-window-option synchronize-panes

Ответ 2

Это должно быть возможно с комбинацией run-shell и tmux show-option, что-то вроде (проверено в tmux 2.3):

bind a run-shell "if [[ `tmux show-options -w | grep 'synchronize-panes.*on'` ]]; then toggle=off; else export toggle=on; fi; tmux display-message \"sync panes tmux: \$toggle\"; tmux set-option -w synchronize-panes \$toggle &> /dev/null"

(это вариант переключения режима мыши, найденного в список рассылки пользователей TMux)

Ответ 3

Tmux не включает это по умолчанию. Это можно сделать, написав script, но это не тривиально.

Ответ 4

Более общее решение, основанное на ответе Фрэнка Шмитта:

!/usr/bin/bash

USAGE="USAGE: $0 OPTION_NAME ON_STATE OFF_STATE"

OPTION_NAME=$1
ON_STATE=$2
OFF_STATE=$3

if [[ "$#" != 3 ]]; then
  echo $USAGE
  exit 1
fi

if [[ `tmux show-option -w | grep "$OPTION_NAME $ON_STATE"` ]]; then
  OPTION_VALUE=$OFF_STATE
else
  OPTION_VALUE=$ON_STATE
fi

tmux display-message "monitor activity: $OPTION_NAME $OPTION_VALUE"
tmux set-option -w $OPTION_NAME $OPTION_VALUE > /dev/null

script берет имя опции, значение включения и значение выключения. Не очень хорошо протестирован, но работает для простых случаев, таких как:

PATH_TO_SCRIPT_ABOVE monitor-activity on off

В вашем .tmux.conf:

bind-key <SOME_KEY> run-shell "tmux_toggle_option monitor-activity on off"