如何在 Tmux 中交换两个窗格?

odd*_*ven 297 keyboard-shortcuts tmux

我有两个水平分割的窗格。我想让当前位于右侧的窗格位于窗口的左侧。我不是在谈论移动焦点(Ctrl+ B o)。我如何实现这一目标?

'左窗格' <--> '右窗格'

Chr*_*sen 442

swap-pane命令可以为您执行此操作。在{}键绑定swap-pane -U,并swap-pane -D在默认配置。

因此,为了实现您想要的更改,您可以Prefix {在右侧窗格中(或Prefix }在左侧窗格中)时使用。

-U-D是指“上”,在窗格索引顺序“向下”(“向上”是相同的方向Prefix o跨过窗格移动)。您可以使用display-panes( Prefix q,默认情况下)查看窗格索引。

  • +1 用于指定 `Prefix` 而不是假设每个人都会使用 `Ctrl-b` (24认同)
  • 同意。当人们假设您使用的是“Ctrl-a”时,情况更糟,因为他们知道可以更改前缀以适合用户。 (3认同)

joe*_*lom 84

你可以击中Ctrl bCtrl在击中时保持按住o。这将旋转所有现有窗格,因此在您的情况下,它将交换仅有的两个现有窗格。

Ctrl b+Alt o以相反的方式旋转(当您有两个以上的窗格时很有用)。

  • 是的,我们在同一页上。但是在第一个 'o' 会导致窗格旋转之后,下一个 'o' 被发送到底层 shell 并由那里的任何应用程序处理。我在想我的地图有些可疑,或者可能是依赖于 tmux 版本的东西。感谢您的回复。 (3认同)
  • @Stabledog 我目前在 tmux 2.3 上,但我认为这对我一直有效......我真的想不出可能是什么问题。`Ctrl+o` 被发送到 shell 而不是 tmux 听起来很奇怪,特别是如果不是重复按下 `Ctrl+b`(或其他 tmux 命令?)的情况。 (2认同)

Kay*_*Kay 60

最精确的控制是swap-pane 直接使用命令。这并不难做到:

  1. ctrl-b q向您显示当前窗口中每个窗格的“ID” - 记住要交换的两个窗格。假设它们是 3 和 5。
  2. ctrl-b :激活 tmux 命令行。然后发出命令swap-pane -s 3 -t 5

请注意,您在键入命令时会自动完成。您也可以直接从tmux 手册页搜索命令的语法。这就是我学习swap-pane.


Mir*_*kiy 18

直接交换两个窗格:

  1. 选择第一个窗格prefix m (默认prefixctrl-b
  2. 转到第二个窗格,然后键入prefix :swap-pane