これはその1〜導入編〜、その2〜設定ファイルについて〜の続きです。
では一番難解な
いろいろ理屈はあるが、これだけ覚えておけばいい *1 。
まずは
defbce on
attrcolor b ".I"
term xterm-256color
termcapinfo xterm-256color 'is=^[r^[m^[2J^[H^[?7h^[?1;4;6l'
defscrollback 1000
altscreen on
escape ^Zz
vbell off
bell_msg "Bell in window %^G"
autodetach on
shell $SHELL
startup_message off
logfile "$HOME/.screen/screen-%Y%m%d-%n.log"
deflog on
shelltitle '$ |bash'
caption always "%{= Rk} %?%F%{b kr}%? %?%h%:%t (screen #%n)%? %{-}"
hardstatus alwayslastline "%{= Gk} %-Lw%40L>%{b kg} %n %t %{-}%+Lw%-040=%{b km} %l %{.b} %Y/%m/%d %C:%s %A "
sorendition "= Rk"
では一番難解な
captionとhardstatusの解説だ。そもそもcaptionとhardstatusの違いは何か。いろいろ理屈はあるが、これだけ覚えておけばいい *1 。
caption => 各ウィンドウに一つずつ hardstatus => 全体で一つだけ
まずは
captionから説明しよう。
Captionについて
caption always "%{= Rk} %?%F%{b kr}%? %?%h%:%t (screen #%n)%? %{-}"
最初の
caption alwaysは見たまんま。キャプションを常に(例えウィンドウが一つの時でも)表示する。captionやhardstatusでは"%"に続く文字列が特別な意味を持っている。まず最初の、
%{= Rk}
これは"%"に続いて中括弧"{}"があるので色指定を表す。色指定は各色を表すアルファベット+何かによって表されており、この文の意味はこうだ。
= => 今までの色指定をリセット
スペース => 区切り文字
R => 背景は明るい赤
k => 文字の色は黒
ここはまだ簡単。次が難解である。
%?%F%{b kr}%?
これは所謂IF文だ。"%? ~ %?"で、"IF ~ END IF"となる。上の形式で説明すると、
%? => IF
%F => ウィンドウがアクティブなら真
%{ => 色指定開始
b kr => 太字、背景は黒、文字の色は赤
} => 色指定終了
%? => END IF
もしそのウィンドウがアクティブなら次の文字列を「太字、背景は黒、文字の色は赤」に設定する
となるわけだ。次はもっと難関。"IF ~ ELSE ~ END IF"だ。
%?%h%:%t (screen #%n)%?
%? => IF
%h => ハードステータスがあればそれ
%: => ELSE
%t (screen #%n) => なければこっち
%t => ウィンドウタイトル
%n => ウィンドウの番号
%? => END IF
もしそのウィンドウにハードステータスがあればそれを表示する。無ければ、ウィンドウのタイトルと番号を所定の書式で表示する。
普通はウィンドウのハードステータス("%h")は必要ないのでこのIF文は削ってもいい気もする。Screenの中でScreenを起動したりするときには"%h"も必要なんだろうか?
最後は簡単だ。
%{-} => 一つ前の色に戻す
少し前のIF文、"%?%F%{b kr}%?"で色が変わっていたら元に戻す。変わってなかったら(この場合は)何もしない。次はさらに長い。
hardstatusに行こう。
hardstatusについて
hardstatus alwayslastline "%{= Gk} %-Lw%40L>%{b kg} %n %t %{-}%+Lw%-040=%{b km} %l %{.b} %Y/%m/%d %C:%s %A "
順に見ていこう。
hardstatus alwayslastline
captionと同じく最初は見たまんま、ハードステータスを常に一番下に表示する。次もいつものように色指定だ。
%{= Gk} %-Lw
%{= Gk} => 色指定を初期化し、背景を明るい緑、文字の色を黒にする
%-Lw
%-w => 現在のウィンドウより前のもののタイトル
L => フラグを付ける
現在のウィンドウより前のもののフラグ付きタイトルを「背景は明るい緑、文字の色は黒」で表示する。
となる。実はフラグってのが何なのかよくわかってません。一つ前にいたウィンドウのタイトルに"-"が付くのはわかったけれども......。
%40L>%{b kg} %n %t
%40L>
%40> => 次の文字列を全体の40%の位置に置く
L => 省略された部分を"..."に置き換える
%{b kg} => 「太字、背景は黒、文字の色は緑」
%n => ウィンドウの番号
%t => ウィンドウのタイトル
左から40%の位置に次の文字列を置き、表示しきれなかった分は"..."と表示する。ウィンドウの番号とタイトルを「太字、背景は黒、文字の色は緑」で表示する。
"L"なんて使い場所によって意味が変わるのだからめんどくさい。また、「文字の色は緑」と書いたが、前回説明した「attrcolor b ".I"」が効いているので、実際には文字の色は明るい緑となる。
%{-}%+Lw
%{-} => 一つ前の色に戻す
%+Lw
%+w => 現在のウィンドウより後のもののタイトル
L => フラグを付ける
一つ前の色、つまり「背景は明るい緑、文字の色は黒」に戻し、現在のウィンドウより後のもののフラグ付きタイトルを表示する。
ここはもう説明不要か。読んだまんまだね。
%-040=%{b km} %l
%-040=
- => 画面右から
040 => 40文字
= => 位置指定
%{b km} => 「太字、背景は黒、文字の色はマゼンダ」
%l => システム負荷
画面右から40文字の位置に、「太字、背景は黒、文字の色はマゼンダ」に設定する。次にシステム負荷を表示する。
"
040"は絶対文字位置指定。頭に"0"が付くと絶対位置、付かないとパーセント表示になる。"システム負荷"とは所謂ロードアベレージ......って何だっけ。ちゃんと調べたことなかったのでググってみた。CPU使用率とロードアベレージ - 教えて!goo
http://oshiete1.goo.ne.jp/qa1480201.html
Linuxのtopコマンドで表示されるload averageについて教えてください。... - 人力検索はてな http://q.hatena.ne.jp/1135926670
うちの鯖だと
1.00行くか行かないか位だから、大丈夫なのかな。
%{.b} %Y/%m/%d %C:%s %A
%{.b} => 背景色はそのまま、文字の色は青
%Y/%m/%d %C:%s %A
%Y => 年
%m => 月
%d => 日
%C => 時:分(12時間表記)
%s => 秒
%A => AM/PM
「太字、背景は黒、文字の色は青」で、日付と時刻を表示する。
最後は日付及び時刻の表示だ。色指定の時、"
."を使うと前の指定をそのまま継承する。又、"="が付いてない場合はその他の属性(この場合は「太字」)も継承する。長かったがこれでやっと終了だ。後は
sorenditionとその他の情報について。
sorenditionについて+その他
sorendition "= Rk"
これは「その他のメッセージ」に対する色指定である。「その他のメッセージ」とはScreenの出す様々な情報や警告のことだ *2 が、縦分割時の分割線もこれに含まれるのだ。因って、この色指定には
captionの時と同じものを使って統一性のあるものにしている。ここまでの設定で以下のような表示が可能になる。他に効果と色の早見表と、リンク集を置いておく。
| 色指定は大文字だと明るい色になります | |||
| 記号 | 効果 | 記号 | 色 |
|---|---|---|---|
| d | 暗くなる | k | 黒 |
| u | 下線 | r | 赤 |
| b | 太字 | g | 緑 |
| r | 反転 | y | 黄 |
| s | 強調 | b | 青 |
| B | 点滅 | m | マゼンダ |
| c | シアン | ||
| w | 白 | ||
| d | 標準 | ||
Manpage of SCREEN
http://www.linux.or.jp/JM/html/GNU_screen/man1/screen.1.html
CreativeStyle » Gitリポジトリから取得したscreenをコンパイル & インストール
http://www.kadoppe.net/archives/2010/01/screen-git-install.html
卜部昌平のあまりreblogしないtumblr - 俺の .screenrc が火を吹くぜ
http://shyouhei.tumblr.com/post/313410522/screenrc
*1
: 前回挙げたリンクにはhardstatusをたくさん使う荒技も解説されている。
*2
: 尤も、標準ではこれらの情報、警告は色指定が反映されない。初期設定では、これらを表示するときにハードステータス行全てを消して、白黒表示することになっているからだ。色指定を反映したいときは、"hardstatus off"という一文を入れておく。
- Newer: Vimの正規表現 "\v", "\zs", "\ze"
- Older: DATEDIF関数の怪(Excel)
Comments:1
- misshi 2011年10月27日 21:18
参考になりました
ありがとうございます
Trackbacks:0
- TrackBack URL for this entry
- http://blog.remora.cx/mt/mt-tb.fcgi/25
- Listed below are links to weblogs that reference
- 最新版GNU Screenで縦分割(その3〜captionとhardstatusについて〜) from blog.remora.cx

