2016-05-29 2 views
1

Я часто запускаю Vim в сеансе tmux, чтобы я мог запускать тесты в соседней панели. На меньшем мониторе я либо должен пожертвовать больше экрана Vim экраном, чем я хотел бы, или сделать тестовую панель слишком маленькой, чтобы читать полные результаты (это нормально, если все проходит, но не тогда, когда есть сбои, и мне нужно для просмотра деталей).переключение между 2 макетами tmux

Тогда мой рабочий процесс становится:

  • запуска тестов внутри Vim
  • переключатель на тестовой панели панели (last-pane)
  • трансфокатора занять полное окно (resize-pane -Z)
  • читать результаты
  • восстановление оригинальной компоновки (resize-pane -Z)
  • переключатель обратно в Vi м панели (last-pane)

Я хотел бы добавить ключ привязки, которые я мог бы использовать, когда я нахожусь в панели Vim для увеличения тестовой панели (прячась Vim), и быть в состоянии использовать ту же привязку раз увеличены чтобы восстановить исходный макет, вернув меня в Вим. Это то, что я придумал, но мне интересно, есть ли лучший способ сделать это. Я должен был установить, проверить и отключить переменную среды, чтобы сохранить состояние, которое будет поддерживать переключение туда и обратно с тем же привязкой клавиш. Я тоже не понял, как сделать включенности специфичную для окна (прямо сейчас, любой сессии акции мультиокна государства во всех его окон, так что это не работает правильно)

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' 

Обновление: Я нашел более простое решение. Вместо того, чтобы полагаться на переменных окружения каждого окна, я могу использовать -F и переменный формат window_zoomed_flag:

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

ответ

0

В вашем tmux.conf, создать keybind, который:

  1. сохраняет состояние масштабирования
  2. Переключить на последнюю панель, unzooming если панель была увеличена в
  3. зуммирования условно в зависимости от состояния увеличенного в # 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" 

Обратите внимание, что обратный слеш на точку с запятой требуется команда сепараторов.

Смежные вопросы