GNU Screen 标题或硬状态行中的右对齐文本

GNU Screen 标题或硬状态行中的右对齐文本

我的 .screenrc 中有这个

caption always "%{= Kw} [%0c] %-Lw%{= KW}[%50>%n%f* %t]%{= Kw}%+Lw%=| %l | ${FULLHOST}"

它通常会显示如下内容:

[01:06] 0$ vim  1$ top  2-$ tail  [3$* ~]          | 0.26 0.54 0.36 | machine.domain.com

但是,当我打开许多窗口时,右侧的数据会被推到边缘并被截断:

[01:07] 0$ vim  1$ top  2$ tail  3$ ~  4$ ~  5$ ~  6-$ ~  [7$* ~] | 0.21 0.46 0.34 | mac

我如何更改标题命令,以便它在必要时截断窗口列表,而不是将正确的信息推到边缘?如果活动窗口也始终显示,则可获得加分。

答案1

我目前正在使用另一种解决方案。我没有使用原始行中的“%=”或 bender 中的“%-30=”(与 -30%(即 70%)标记对齐),而是使用“%-043=”(与 -43 字符标记对齐)。但这当然与 bender 的问题相同,我需要偏移的量会随着每个服务器而变化。解决方案是使用以下命令编辑每个服务器的 .screenrc:

sed -i "s/043/0$(( 19 + $#FULLHOST ))/" ~/.screenrc

(这个19是负载显示和间距使用的字符数)

由于我的 .screenrc 是由我的 shell 的 .rc 文件生成的(如果不存在的话),所以我可以在执行此操作后立即运行此命令,并最终为每个服务器获得正确的偏移对齐。虽然不太优雅,但确实有效!

剩下的问题是我不太关心解决的:

  • 窗口列表(以及左侧的任何内容,包括时间)现在被推离左侧。我通过移除时钟解决了这个问题。
  • 如果机器的主机名发生变化,我需要重新生成 .screenrc,这涉及删除它然后启动一个新的 shell。

答案2

我用:

caption always "%-Lw%{= Yk}%50>%n%f*%t%{-}%+Lw%<%-12= %?%F%?%{b}%c %m/%d%?"

显示内容如下:

0*bender@armitage  1 bender@rikki  2 bender@gibson     15:11 05/30

随着窗口列表大小的增加,这将使时间和日期保持在状态行上,并将活动窗口保持在列表中。您缺少的神奇部分是要保留在右侧的部分的定义宽度。这是我的 caption 命令中的“%-12=”宽度指令。

尝试以下方法:

caption always "%{= Kw} [%0c] %-Lw%{= KW}[%50>%n%f* %t]%{= Kw}%+Lw%-30=| %l | ${FULLHOST}"

您需要调整宽度(上面的 %-30=)才能显示完整的主机名。

相关内容