如何将一个大的 tmux 窗格与几个小的窗格交换?
换句话说:从像这样的安排A– 像这样的安排乙:
A ┊ B
┏───────────────────────┓ ┊ ┌───────┬───────┬───────┐
│ │ ┊ │ │ │ │
│ 1 │ ┊ │ 2 │ 3 │ 4 │
│ │ ┊ │ │ │ │
┡───────┬───────┬───────┩ ┊ ┢───────┴───────┴───────┪
│ │ │ │ ┊ │ │
│ 2 │ 3 │ 4 │ ┊ │ 1 │
│ │ │ │ ┊ │ │
└───────┴───────┴───────┘ ┊ ┗───────────────────────┛
有大量资源涵盖类似的操作,但不完全是这样的。
- ↑///↓将焦点移动到另一个窗格←。→
- alt+ ↑/ ↓/ ←/→调整它们的尺寸。
- Space循环各种窗格布局/排列。
- {/}将各个窗格向左/向右推 - 但这只是强制直接交换,例如:
A ┊ C
┏───────────────────────┓ ┊ ┌───────────────────────┐
│ │ ┊ │ │
│ 1 │ ┊ │ 2 │
│ │ ┊ │ │
┡───────┬───────┬───────┩ ┊ ┢───────┱───────┬───────┤
│ │ │ │ ┊ │ │ │ │
│ 2 │ 3 │ 4 │ ┊ │ 1 │ 3 │ 4 │
│ │ │ │ ┊ │ │ │ │
└───────┴───────┴───────┘ ┊ ┗───────┹───────┴───────┘
答案1
使用-f
选项tmux split-window
。新窗格将跨越整个窗口高度(使用-h
)或整个窗口宽度(使用-v
)。
在最底部创建一个新窗格:
tmux split-window -vf
调用
tmux display-panes
(或prefix,q)来识别要交换的两个窗格:顶部窗格和底部窗格。假设这些窗格为
0
和3
。交换它们:tmux swap-pane -s 0 -t 3
或者您可以标记一个窗格(RMB)并
tmux swap-pane
在另一个窗格中运行。毁掉最上面的玻璃。
或者在顶部窗格中运行此命令:
tmux split-window -vf "tmux swap-pane -dt '$TMUX_PANE'"
要“撤消”(即将“移动”较大的底部窗格到顶部),请在底部窗格中运行此操作:
tmux split-window -vfb "tmux swap-pane -dt '$TMUX_PANE'"
或者标记顶部窗格(RMB),打开 tmux 命令提示符(prefix,:)并执行以下命令:
split-window -vf "tmux swap-pane -d"
当您的顶部窗格很忙并且您无法在那里的 shell 中执行命令时这很有用。