如何隐藏tmux窗格?


59

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

--------------------------
|             |      2   |
|             |          |
|        1    |----------|
|             |      3   |
|             |          |
--------------------------

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

--------------------------
|             |          |
|             |          |
|        1    |       2  |
|             |          |
|             |          |
--------------------------

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

  • 是否有类似的PREFIX + z内容可以缩放窗格2但不触摸窗格1?要么
  • 有没有一种方法可以快速隐藏窗格3并在需要时将其重新显示?

Answers:


71

使用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默认为0while window是下一个空闲窗口标识符。

返回窗格3:

为了获得面板3和背面布局,选择窗格2和问题Prefix- :join-pane -vs 1:2.0告诉tmux拆分窗格2垂直(-v),并加入(来源)窗格(-s)与标识符1:2.0。(可选)您可以删除sessionpane标识符。还需要注意的是TMUX存储命令行的历史,方便访问Prefix- - 。:Up

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


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


明确说明!对我来说工作顺利,比我的回答好得多!
2014年

默认情况下,窗格3将拆分为最后一个窗口,如果当前会话中已有3个窗口,则该窗格将变为Window 3(假设窗口从0开始),因此“ Window 3”中的3取决于在打开的窗口中,如何在自定义键绑定中实现此目的?
CodyChan 2015年

5

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

原始设置:

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

在窗格2中,再次运行tmux并创建两个窗格(这次是一个在另一个之上)。然后在窗格2.1中运行vim,在窗格2.2中运行CLI。这样可以让您使用第二个Vim实例全屏显示2.1窗格,从而得到所需的行为。


这就是我所说的开箱即用的想法!
user881300

感谢user881300。它有一些缺陷(例如,能够发送命令有一些怪癖)。我希望在测试后将其更新为更完整的答案-我自己也需要类似的功能。
BinaryBen

2
@ user881300从技术上讲,这是框框式的思考。
Mateen Ulhaq,

3

除了隐藏窗格3外,您还可以作一些欺骗,使其很小,这也可能适用于您的情况。

当窗格2是活动窗格时,您可以

PREFIX : resize-pane -D 40

然后,要再次向上移动它,您可以

PREFIX : resize-pane -D 28

在这里您必须将28替换为一个合适的数字,或者可以尝试PREFIXEsc4使用进行自动调整大小。


我正在使用调整窗格的大小,set -g mouse-resize-pane on但除了调整大小以外,我们还有其他选择吗?
user881300 2014年

@ user881300我无论如何都不是tmux专家,但是我很想知道这是否可行。
2014年

1
CTRL+B, ALT+<arrow direction to resize>,然后用CTRL+B, ESC, 4(thx @Bernhard)恢复它。
FelikZ 2015年

1

我现在这个问题差不多有5年了,但是我发现它是因为我想做类似的事情,并且由于user78291的回答,我想到了以下键绑定:

bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.1

这样,我可以Prefix!用来隐藏当前窗格Prefix@并将其重新显示。令人高兴的是,我可以用这种方式隐藏多个窗格。

它远非完美,但可以完成隐藏窗格并将其重新带回的工作。


0

我知道这实际上并没有隐藏您正在处理的窗格,但是我试图这样做是为了阻止tmux将常用命令发送到选定的窗口,并获得了更为简单的解决方案。

如果您不想在视觉上隐藏窗格,而只想停止任何输入到窗格。一种情况是您想将命令发送到5个打开的窗格,但不想将其发送到其中的2个。

在这种使用情况下,您可以 ctrl + s在不希望命令进入的窗格上执行操作(ctrl + s将所有输入锁定到窗格)。

完成后,请按ctrl + c退出。

注意:不要ctrl + q在命令后按,因为它将在该屏幕上运行所有命令。ctrl + c不会这样做(在Ubuntu上尝试过)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.