2016-05-29 5 views
1

Ich oft Vim in einer tmux-Sitzung ausführen, um Tests in einem angrenzenden Fensterbereich ausführen zu können. Auf einem kleineren Monitor muss ich entweder mehr Vim-Bildschirm opfern, als ich möchte, oder das Testfenster zu klein machen, um die vollen Ergebnisse zu lesen (was gut ist, wenn alles passiert, aber nicht, wenn es Fehler gibt und ich brauche um die Details zu sehen).toggle zwischen 2 tmux-Layouts

Dann ist mein Workflow wird:

  • Trigger-Tests aus Vim
  • Schalter auf Testbereich (last-pane)
  • Zoombereich voll Fenster zu besetzen (resize-pane -Z)
  • lesen Sie die Ergebnisse
  • Original-Layout wiederherstellen (resize-pane -Z)
  • zurück zu Vi wechseln m Scheibe (last-pane)

Ich wollte ein Schlüssel hinzufügen Bindung, die ich verwenden könnte, wenn ich in dem Vim Bereich bin den Testbereich zu vergrößern (versteckt Vim), und in der Lage, die gleiche Bindung zu benutzen, wenn gezoomt um das ursprüngliche Layout wiederherzustellen und mich zu Vim zurückzubringen. Das ist, was mir eingefallen ist, aber ich frage mich, ob es einen besseren Weg gibt, wie ich es machen kann. Ich musste eine Umgebungsvariable setzen, prüfen und aufheben, um den Zustand zu speichern, der Hin- und Herschalten mit der gleichen Schlüsselanbindung unterstützt. Ich habe auch nicht herausgefunden, wie die Umschaltfunktion spezifisch an ein Fenster zu machen (gerade jetzt, alle Multi-Fenster-Sitzung Aktien der Staat in allen seinen Fenstern, so dass dies nicht richtig funktioniert)

bind Space if-shell '[ -z "${ALT_PANE_ZOOM+x}" ]' \ 
        'select-pane -t :.+; resize-pane -Z; set-environment ALT_PANE_ZOOM 1' \ 
        'set-environment -u ALT_PANE_ZOOM; last-pane' 

Update: Ich fand eine einfachere Lösung. Anstatt auf einem Pro-Fenster-Umgebungsvariable zu verlassen, kann ich -F und die window_zoomed_flag Formatvariable nutzen:

bind Space if-shell -F '#{window_zoomed_flag}' \ 
         'last-pane' \ 
         'select-pane -t :.+; resize-pane -Z' 

Antwort

0

In Ihrem tmux.conf, eine keybind zu schaffen, die:

  1. den Zoom-Zustand speichert
  2. wechseln Sie in den letzten Bereich unzooming wenn eine Scheibe in
  3. Bedingtes gezoomt wurde in # auf dem gezoomten Zustand zoomt je 1

-

bind key run-shell "tmux setenv zoomed $(tmux display -p '#{window_zoomed_flag}')"\; \ 
     last-pane\; \ 
     run-shell "test $(tmux display -p '#{zoomed}') -ne 0 || tmux resize-pane -Z" 

Beachten Sie, dass der Backslash auf den Semikolons entkommt Befehl Separatoren benötigt werden.