.screenrcの設定

GNU screen の.screenrcの設定についてまとめてみました。

現在私が使用している設定一覧です。

エスケープをCtrl+tに変更します。
デフォルトでは、Ctrl+aになっていますが、行の先頭に移動とかぶっているので、変更しています。

escape ^t^t

Puttyを全画面で表示するとウインドウタイトルが表示されないので、ステータスを画面の左下に表示されるようにします。

hardstatus off

Ctrl+t w でウインドウの一覧が表示さるようになります。

bind w windowlist -b

スクロールバックを10000行までできるようにします。Ctrl+t Esc でカーソルキーを使いスクロールバックできるようになります。

defscrollback 10000

画面の下に現在の時間とウインドウをタブみたいに表示します。

caption always "%{b RK} %y/%m/%d(%D)%c:%s %{bu dr} | %-w%{=bu CK}%n %t%{-}%+w"

ファンクションキーでウインドウを切り替えられるようにします。

bindkey -k k1 select 0
bindkey -k k2 select 1
bindkey -k k3 select 2
bindkey -k k4 select 3
bindkey -k k5 select 4
bindkey -k k6 select 5
bindkey -k k7 select 6
bindkey -k k8 select 7
bindkey -k k9 select 8
bindkey -k k; select 9

Ctrl+t 2 で画面を分割することができます。Ctrl+t oで分割した画面の移動、Ctrl+t 0で現在の画面を消す、Ctrl+t 1 で一画面に戻すことができます。

bind 2 split
bind o focus
bind 1 only
bind 0 remove

Ctrl+t r で分割した画面サイズを変更できます。jで1行大きく、kで1行小さくすることができます。

bind r eval 'echo "Resize window"' 'command -c resize'
bind -c resize ^] command
bind -c resize j eval 'resize +1' 'command -c resize'
bind -c resize k eval 'resize -1' 'command -c resize'

またログイン時にscreenが起動するように、.zprofileに以下の用に記述します。

if [ -x which screen ]; then
screen -d -R
fi

これで、デタッチされたセッションがあればアタッチ、デタッチされたセッションがなければ新規にセッションを生成します。スクリーンはzshと一緒に使用すると、コマンドの履歴の共有をでき非常に便利です。