我的 .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=)才能显示完整的主机名。