今回はその設定ファイル .screenrc に関して。
ここで紹介する .screenrc をホームディレクトリに置けば、こんな感じに仕上がります。それでは行ってみましょう。
現在の僕の .screenrc
defutf8 on
defencoding utf8
encoding utf-8 utf-8
escape ^z^z
bind x
bind ^x
startup_message off
autodetach on
vbell off
caption always "%-w%10L>%{=b bw}%n %t%{-}%+w%-0="
hardstatus alwayslastline "%H%=%Y/%m/%d %02c"
shelltitle "$ |shell"
bindkey -k kD stuff \177
termcapinfo xterm* ti@:te@
shell $SHELL
解説
defutf8 on文字コードを UTF-8 にする。
defencoding utf8
encoding utf-8 utf-8
web 上の設定サンプルには文字コードの指定に kanji とか defkanji といったコマンドを使っているものがあるが、それらは 3.9.10 以前の古いバージョンでのコマンドで、最新バージョンではすでに無効。現在は encoding と defencoding を使う。
escape ^z^zエスケープ文字を C-Z に設定。C-Z 自体を入力したいときには それに続けてさらに C-Z を入力。
bind xデフォルトで C-Z x と C-Z C-X にバインドされている lockscreen を無効化
bind ^x
startup_message offそれぞれ
autodetach on
vbell off
- 起動時のメッセージを非表示
- ターミナルが落ちたら自動的にデタッチ
- 音声ベルが鳴らない時に可視ベルが "Wuff, ---- Wuff!!" とうるさいので可視ベルをオフにする
caption always "%-w%10L>%{=b bw}%n %t%{-}%+w%-0="caption はウィンドウごとにあるけれど、hardstatus は一つの screen プロセスに一つ。書式は以下の通り。
hardstatus alwayslastline "%H%=%Y/%m/%d %02c"
- %-w 表示しているウィンドウより前のウィンドウ番号とウィンドウ名
- %10L> ここを左から10%くらいに配置
- %{=b bw} 文字のスタイルの変更
- %n %t 表示しているウィンドウのウィンドウ番号 (%n) とウィンドウ名 (%t)
- %{-} 文字のスタイルを元に戻す
- %-w 表示しているウィンドウより後のウィンドウ番号とウィンドウ名
- %-0= ここを右端にする
- %H Hostname
- %Y/%m/%d %02c 日付と時刻
shelltitle "$ |shell"shelltitle でウィンドウ名を設定。
screen はシェルから出力されたエスケープシーケンスを頼りにプロンプトを特定して、その後に入力されたコマンドを拾ってここに表示する。
詳しくいえば、"^[k^[\" ("^[" はエスケープ文字) が出力されてから、上記 shelltitle で "|" の直前までに入力した文字列までを読み飛ばして、その後に入力された文字列をコマンドとして解釈してくれる。なので、shelltitle の "|" までに書く文字列はシェルの末尾と一致している必要があり、またシェルは上記のエスケープシーケンスを出力しなければならない。シェルの設定はまたの機会に。
"|" 以降の文字列はデフォルトのウィンドウ名。
bindkey -k kD stuff \177Mac の delete キーを BackSpace として使うためのキーバインド。
termcapinfo xterm* ti@:te@マウスホイールを利用可能にする。
shell $SHELLCygwin 上で screen を実行したときにログインシェルは zsh なのに bash が立ち上がったので追加。
情報募集
上記の設定をしていても、一度デタッチしたスクリーンをレジュームすると UTF-8 の文字が全て "?" になってしまいます。レジューム時の screen にコマンドラインオプション -U を付ければ UTF-8 モードになってうまくいくのですが、.screenrc での設定だけで完結することはできないのでしょうか。
そもそもなぜデタッチで設定が無効になるのかよく分かりません。
0 件のコメント:
コメントを投稿