web-dev-qa-db-ja.com

GNU画面のキャプションまたはhardstatuslineのテキストを右揃え

私はこれを私の.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

キャプションコマンドを変更して、適切な情報を端から押し出すのではなく、必要に応じてウィンドウリストを切り捨てるにはどうすればよいですか?アクティブなウィンドウも常に表示されている場合はボーナスポイント。

6
Alex J

私が現在使用している別の解決策。元の行のように「%=」、またはベンダーの「%-30 =」(-30%(別名70%)マークに揃える)の代わりに、「%-043 =」(揃える)を使用しています-43文字マークまで)。しかしもちろん、これにはベンダーと同じ問題があり、サーバーごとに変更を相殺する必要がある量があります。解決策は、次のようなコマンドを使用して、サーバーごとに.screenrcを編集することです。

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

(19は、ロード表示と間隔で使用される文字数です)

.screenrcは、シェルの.rcファイルがない場合は生成されるため、実行後すぐにこのコマンドを実行すると、サーバーごとに正しくオフセットされた配置になります。エレガントではありませんが、機能します!

解決するのに十分気にしない残りの問題:

  • ウィンドウリスト(および時間も含めて左側にあるもの)は、左側から押し出されます。私は時計を外すことでこれを解決しました。
  • マシンのホスト名が変更された場合は、.screenrcを再生成する必要があります。これには、.screenrcを削除してから、新しいシェルを起動することが含まれます。
4
Alex J

私が使う:

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

これにより、ウィンドウリストのサイズが大きくなっても、ステータス行とアクティブなウィンドウの時刻と日付がリストに保持されます。欠けている魔法のビットは、右側に残したい部分の定義された幅です。これは、私のキャプションコマンドの「%-12 =」幅ディレクティブです。

次のようなものを試してください:

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

完全なホスト名を表示するには、幅(%-30 =上記)で遊ぶ必要があります。

3
bd808