如何移动Tmux窗格

时间:2019-05-28 13:20:00

标签: tmux

我喜欢使用3个tmux窗格。屏幕上半部分的一个水平窗格,下半部分的另外两个窗格。这些窗格是垂直拆分的。

tmux pane image

在某些情况下,我想使用最后一个窗格,使其从上到下。像这样: target tmux pane image

我该如何实现?使用[ctrl + b ctrl + o]和[ctrl + b空格]找不到所需的位置,而且很麻烦...

谢谢:)

1 个答案:

答案 0 :(得分:2)

可能有一种更简单的方法,但是您可以做的是在两种配置中的每一种中手动排列窗格,并在变量中注明每个布局,例如:

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来设置布局,也可以通过从具有变量的Shell中给出命令来设置布局:

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)来运行此shell:

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