如何移动 Tmux 面板

how to move Tmux panes

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

在某些情况下,我想获取最后一个窗格并使其从上到下移动。像这样:

我怎样才能做到这一点?使用[ctrl+b ctrl+o]和[ctrl+b space]都没有到达想要的位置,比较麻烦

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

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
# 
# 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

并绑定到 运行 这个 shell:

,比如 control-L
    bind-key -n C-l run-shell 'mtmux'