как двигать панели Tmux - PullRequest
3 голосов
/ 28 мая 2019

Мне нравится работать с 3 панелями tmux.одна горизонтальная панель в верхней половине экрана и еще две панели в нижней половине.Эти панели разделены по вертикали.

tmux pane image

В некоторых случаях я хотел бы взять последнюю панель и заставить ее двигаться сверху вниз.как это: target tmux pane image

Как мне этого добиться?использование [ctrl + b ctrl + o] и [ctrl + b пробел] не достигло желаемой позиции и является громоздким ...

Спасибо:)

1 Ответ

2 голосов
/ 28 мая 2019

Вероятно, есть более простой способ, но вы можете расположить панели вручную в каждой из двух конфигураций, отмечая каждый макет в переменной, например ::

.
layout1=$(tmux list-windows -F '#{window_layout}')

Содержит строку примерно так:

5f2f,80x23,0,0[80x11,0,0,0,80x11,0,12{39x11,0,12,1,40x11,40,12,2}]

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

Когда у вас есть две строки, вы можете установить привязку для установки этого макета, используя select-layout, или передав команду из оболочки, где у вас есть переменные:

tmux select-layout "$layout1"

Возможно, вам будет проще написать небольшой вспомогательный скрипт, скажем mtmux, для переключения между макетами:

#!/usr/bin/bash
# https://stackoverflow.com/q/56343223/5008284
# toggle between 2 layouts, previously saved
layout1='5f2f,80x23,0,0[80x11,0,0,0,80x11,0,12{39x11,0,12,1,40x11,40,12,2}]'
layout2='093c,80x23,0,0{39x23,0,0[39x11,0,0,0,39x11,0,12,4],40x23,40,0,3}'
layout="$(tmux list-windows -F '#{window_layout}')"
case "$layout" in
*80x11*)    new=$layout2 ;;
*)          new=$layout1 ;;
esac
tmux select-layout "$new"
tmux display-panes
exit 0

и иметь привязку, скажем, control-L, для запуска этой оболочки:

    bind-key -n C-l run-shell 'mtmux'
...