2014-09-18 6 views
25

Questo è un po 'del mio tmux.conftmux: come passare "on" e "off" opzioni con la stessa chiave

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

Come si può vedere, di sincronizzazione e UNSYNC opzioni per vetri sono tenuti a due chiavi diverse. È possibile attivare la sincronizzazione/non sincronizzazione con la stessa chiave?

risposta

44

Se non si specifica esplicitamente "on" o "off", l'opzione verrà attivata. Di seguito Basterebbe:

bind a set-window-option synchronize-panes

3

Questo dovrebbe essere possibile con una combinazione di run-shell e tmux show-option, qualcosa di simile (testato in 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" 

(questa è una variante di una ginocchiera topo-mode trovato sul TMux user mailing list)

+0

Grazie per il link per il mouse in modalità di commutazione. Sto solo cercando questo. Ecco la commutazione del mouse che ho risolto con: bind m run-shell "se [[' tmux showw | grep modalità-mouse. * On']]; quindi commuta = off; altrimenti esporta toggle = on; fi; tmux display- messaggio \ "Mouse: \ $ toggle \"; tmux setw mode-mouse \ $ toggle &>/dev/null; per cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set -g \ $ cmd \ $ attiva &>/dev/null; done; " –

+0

La risposta di Ojp è più semplice, ma non ha funzionato per me per l'impostazione del mouse modalità in tmux 1.8, forse perché l'impostazione può assumere un valore diverso da on/off (on/off/copy-mode). Il metodo qui funziona per quel caso. –

-1

Tmux non lo abilita di default. Può essere fatto scrivendo uno script, ma non è banale.

0

Una soluzione più generica sulla base della risposta da Frank Schmitt:

!/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 

Lo script prende il nome dell'opzione, il sul valore e il valore off. Non molto ben collaudato, ma funziona per i casi semplici come:

PATH_TO_SCRIPT_ABOVE monitor-activity on off 

Nel vostro .tmux.conf:

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