我可以让 tmux 窗格变得“粘性”吗?

我可以让 tmux 窗格变得“粘性”吗?

是否有可能使一个或多个 tmux 窗格变得“粘性”?即这些窗格将出现在我的 tmux 会话中当前可用的所有窗口中?

答案1

这会出现在邮件列表中一次 A 尽管

不,不可能在多个窗口中拥有一个窗格。

内部设计多路复用器允许窗口有多个会话,但一个窗格只能属于一个窗口。

答案2

就像克里斯说的那样,没有内置功能允许将窗格标记为粘性,这是有道理的,因为如何处理所有其他窗口上的所有窗格的重新构造并不是立即显而易见的当您切换当前窗口上某个特定窗格的“粘性”时。以用户看不到的方式搞乱布局通常会带来糟糕的用户体验。

您可能会发现像这样的绑定很有用:

bind -n M-k move-pane -t ':+'
bind -n M-j move-pane -t ':-'

这对于习惯使用 J 和 K 左右移动的 Vim 用户来说很友好。通过此绑定,tmux 将介入并吞并Alt+K并将Alt+J活动窗格分别移动到右侧和左侧窗口。

它会拉出您当前所在的窗口并将其填充到相邻的 tmux 窗口中。您甚至可以指定将窗格插入到目标窗口布局中的索引。有关可以提供给 的其他选项,请参阅联机帮助页move-pane

这样,当然仍然存在布局更改(源窗口中的一个是隐式的,仅限于一个窗格,而目标窗口中的一个,也仅限于一个窗格并且可以直接观察到),但它更加“受控” ”,只要您将注意力集中在旨在“粘性”的窗格上,或多或少就可以实现您的目标。

我仍然觉得这不能令人满意,因为需要聚焦要“粘性”的窗格,如果您想要一个始终可见的粘性窗格,但实际上从未真正将其聚焦,那么很难快速发出此命令。

有可能提出稍微更复杂的 tmux 脚本,它为您想要粘性的窗格使用特殊名称,并为您手动安排内容。不过,这听起来很痛苦。

最后一个有趣的选择是使用嵌套 tmux:将粘性窗格放入父 tmux 中,并让另一个窗格包含托管其余终端的 tmux。这样你就可以在你的孩子 tmux 中自由切换。这样做的问题是,您需要想出一些可行的方法,因为默认情况下您需要按两次前缀键才能完成相同的任务。也很烦人。我已经绑定了通过任何嵌套 tmux 智能“隧道”的绑定,但是这些低效消息传递方案的逻辑很快就变得难以管理。这样做的一个限制是,这里的“粘性窗格”必须跨越整个高度或宽度,它不能是一个角落。

总之,我想说这是 tmux 应该为我们实现的一个功能,因为几乎不可能正确地编写脚本,但是我不知道如何以一种不令人困惑的方式实际完成它(请参阅我的第一句话)。

相关内容