如何隐藏 tmux 窗格?

use*_*300 80 tmux

我的 tmux 窗口中有 3 个窗格:

--------------------------
|             |      2   |
|             |          |
|        1    |----------|
|             |      3   |
|             |          |
--------------------------
Run Code Online (Sandbox Code Playgroud)

窗格 1 和 2 具有vim. 窗格 3 运行我正在开发的 cli。有时我想比较窗格 1 和 2,所以我想隐藏窗格 3:

--------------------------
|             |          |
|             |          |
|        1    |       2  |
|             |          |
|             |          |
--------------------------
Run Code Online (Sandbox Code Playgroud)

然后再次带回窗格 3。我不想杀死窗格 3,因为我已经在那里设置了一些东西并且不想再次设置它们。

  • 是否有类似的东西PREFIX + z可以缩放窗格 2 但不触摸窗格 1?或者
  • 有没有办法快速隐藏窗格 3 并在需要时将其恢复?

小智 98

使用break-panejoin-pane命令。man tmux有关详细信息、选项和用法,请参阅。


隐藏窗格 3:

选择窗格3并输入Prefix- :break-pane -dP

tmux将窗格发送3到背景中的窗口(-d标志)并在窗格 2(-P标志)中打印有关它的一些信息。默认情况下,您会看到类似1:2.0(意思是:session:window.pane。点击q继续工作。1

1通过一些练习,您将能够删除-P标志,因为您可以预测session:window.pane三元组:session默认为当前会话和pane默认为0whilewindow将是下一个空闲窗口标识符。

取回窗格 3:

为了获得面板3和背面布局,选择窗格2和问题Prefix-:join-pane -vs 1:2.0告诉tmux给拆分窗格2垂直(-v),并加入(来源)窗格(-s与标识符)1:2.0。或者,您可以删除sessionpane标识符。另请注意,tmux 存储命令行历史记录,可通过Prefix- :-UpPrefix-方便地访问: - ctrl-p

您可能需要一些时间来掌握它,但是一旦掌握,您肯定能够想出方便的自定义键绑定。


这个问题包含一些有用的信息和技巧,可以改善您的工作流程。


小智 6

一个想法:在 tmux 中运行 tmux。

原始设置:

窗格 1 和窗格 2;并排。正常在窗格 1 中运行 vim。

在窗格 2 中,再次运行 tmux 并创建两个窗格(这次一个在另一个之上)。然后在窗格 2.1 中运行 vim,在窗格 2.2 中运行 CLI。这应该允许您使用 Vim 的第二个实例全屏显示窗格 2.1,从而产生您想要的行为。

  • @user881300 从技术上讲,这是盒子中的思维。 (3认同)

小智 6

我现在这个问题已经快 5 岁了,但我刚刚找到它是因为我想做类似的事情,并且由于user78291 的回答,我想出了以下键绑定:

bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.1
Run Code Online (Sandbox Code Playgroud)

这样,我可以使用Prefix!隐藏当前窗格并将Prefix@其带回来。好的部分是我可以通过这种方式隐藏多个窗格。

它远非完美,但它可以很好地隐藏窗格并将它们带回来。

  • 在tmux 2.x版本中,它是bind!中断窗格 -d 绑定@加入窗格 -s $.1 (2认同)