在两个窗口之间镜像窗格


14

单个tmux会话的两个不同窗口中是否可能出现相同的窗格?

通常,我在主窗口中有一个水平拆分,顶部窗格中有vim(大约是终端高度的80-90%),底部窗格中有一个命令行,运行我正在处理的程序。由于底部窗口非常小,所以我经常看不到错误输出,并且使用tmux的键盘快捷键进行向后滚动变得很烦人。我希望将第二个窗口附加到同一窗格,以便在需要查看更多错误输出时,可以快速切换到第二个窗口而无需处理回滚。这可能吗?

(我想一个后备方法是使用类似tee的方法将stdout写入日志文件,并在第二个窗口中尾随它。我希望这不是必需的)

Answers:


7

默认情况下,您可以通过按Prefix和切换窗格的“缩放状态” z(默认前缀为Ctrl+B)。

这将使当前窗格(例如,您的命令行窗格)占据整个窗口。再次按Prefixz以“取消缩放”窗格。


10

恐怕这是您不能做的事情之一tmux(我希望一个窗格在不同大小的多个空间中显示的问题是主要原因)。但是,有几种方法可以解决此问题-所有方法都基于将某些操作绑定到某些键组合。由于很大程度上取决于您使用的布局,因此您要提到的只有两个窗格的简单布局使您的生活变得更加轻松

  1. rotate-window -它只会交换窗格,从而为您提供80%-90%的命令输出(以及ViM的小窗口)。

  2. break-panejoin-pane -v -p <preview_percentage> -t !

  3. pipe-pane通过command无缓冲重定向到命名管道(即使用创建的文件系统节点mkfifo)-然后tail -f在另一个窗格中使用该命名管道。

  4. 将输出通过管道传递到less,该输出还具有遵循的模式tail(至少是GNU 模式)。

  5. resize-pane -Z在较小的面板上将其放大到完整的终端。随后的取消缩放将使其保持活动状态,因此需要一些技巧才能使其舒适地工作。


2
顺便说一句-“我希望一个窗格在不同大小的几个空间中显示的问题是主要原因”,这可能是实现它的复杂性的一个因素,但是tmux确实通过分组支持在窗口级别上的相同功能会议unix.stackexchange.com/questions/24274/…。它只是在下面的较小窗口中添加了填充。理论上,窗格镜像可以用相同的方式完成。
mahemoff 2014年

嗯...你是对的,这可能是解决问题的一种方法。
彼得,2014年

1

您可以使用脚本将伪会话输出到文件,然后tail在第二个窗口中输出该文件。

在工作窗格中。

script -f tailme.out

并在您的查看窗格中。

tail -f tailme.out

1

我同意其他人的观点,这对于您的情况Prefix+ z是最直接的解决方案,但是对于镜像窗格的一般问题,有一点可能会起作用-将屏幕会话嵌套在tmux中。

安装gnu屏幕,然后为要镜像的窗格启动它。然后screen -x附加到其他窗格中。

如果需要,您还可以在窗格中嵌套另一个tmux会话,但应谨慎嵌套tmux会话。

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.