【发布时间】:2021-07-23 20:23:42
【问题描述】:
我喜欢使用 3 个 tmux 窗格。屏幕上半部分的一个水平窗格和下半部分的另外两个窗格。这些窗格是垂直拆分的。
在某些情况下,我想取最后一个窗格并使其从上到下。像这样:
我怎样才能做到这一点?使用 [ctrl+b ctrl+o] 和 [ctrl+b space] 没有到达想要的位置,很麻烦。
【问题讨论】:
标签: tmux
我喜欢使用 3 个 tmux 窗格。屏幕上半部分的一个水平窗格和下半部分的另外两个窗格。这些窗格是垂直拆分的。
在某些情况下,我想取最后一个窗格并使其从上到下。像这样:
我怎样才能做到这一点?使用 [ctrl+b ctrl+o] 和 [ctrl+b space] 没有到达想要的位置,很麻烦。
【问题讨论】:
标签: tmux
可能有一种更简单的方法,但您可以在两种配置中手动排列窗格,并在变量中记录每个布局,例如:
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'
【讨论】: