![如何在 tmux 中定位背景窗格](https://linux22.com/image/1624843/%E5%A6%82%E4%BD%95%E5%9C%A8%20tmux%20%E4%B8%AD%E5%AE%9A%E4%BD%8D%E8%83%8C%E6%99%AF%E7%AA%97%E6%A0%BC.png)
在 tmux 窗口中,假设我有 3 个窗格,索引分别为 0、1 和 2。
如果我选择窗格2
作为活动窗格,然后执行break-pane -d
,它会将该窗格发送到后台。
为了重新调用该窗格,我会这样做join-pane -s $.0
。即使隐藏窗格没有索引0
,出于某种原因,$.0
它也能工作。我似乎找不到任何文档来说明这意味着什么。tmux 手册页似乎表明可以src-pane
是窗格 ID,但没有提到如何在后台定位窗格。
有人知道这是如何运作的吗?
答案1
没有背景,就没有“隐藏”。
break-pane -d
,它会将该窗格发送到后台。
不是背景,而是新窗户. 一个新窗口被创建。
即使隐藏窗格没有索引
0
,但由于某种原因$.0
它仍然有效。
该窗格确实有索引0
在新窗口中。这0
是相对于窗口的窗格索引。它不同于%0
,后者是唯一的窗格 ID,可能属于不同的窗格。
$
指定一个窗口。它是具有最高编号的窗口的标记。它可能是用break-pane
或创建的可能不会:break-pane
创建一个具有尽可能低的编号的窗口,因此如果已经存在的窗口在编号上有间隙,则$
之后break-pane
将不会引用您想要的窗口。
$TMUX_PANE
识别窗格的一个可靠方法是从或获取其窗格 ID tmux display-message -pF "#{pane_id}"
;或者至少在调用时获取有关新窗口的信息break-pane
:
tmux break-pane -dP
您可以将其中任何一个存储在 shell 变量中,但将其存储在正在移动的窗格中的 shell 中则毫无意义。如果您找不到窗格,那么您将无法使用变量找到 shell。因此,最好使用另一个 shell 并在-s
使用时指定目标窗格break-pane
。请注意,如果您决定提供窗格 ID,break-pane -s
那么最好首先存储 ID,而不是break-pane -P
返回的内容。
幸运的是,break-pane
你可以姓名新窗口:
tmux break-pane -d -n background
然后您可以说您已将窗格发送到background
:) 要取回窗格:
tmux join-pane -s background
(假设你从那以后没有弄乱过新窗口break-pane
,否则background
,它标识了一个窗户,可能不足以确定正确的窗格)。
我似乎无法在任何地方找到任何关于这是什么意思的文献。
我所写的所有内容都是从我这里得到的man 1 tmux
(尽管我承认文档很庞大,一开始可能看起来让人不知所措)。