GNU screen メモ

はじめに

id:marqs とかに「screen いいよー使うと便利だよー」と薦められながらも「別にそんなに不自由してないし、設定とか調べるの面倒だからいいや」と放置していた GNU screen ですが、年始に読んだnokunoさんの開発環境の記事に screen が載っているのを見て急に欲しくなり、使ってみることにしました。

今じゃこれ無しに生活できません。今まで使ってなかったのがバカみたいです。

使ってみて一ヶ月ほど経ったので、覚えたことをメモ書きすることにしました。

設定

先述の id:nokuno さんの設定を丸パクリ参考にして設定しました。

autodetach on
bell_msg "^G"
defkanji utf-8
defencoding utf-8
encoding utf-8 utf-8
defscrollback 100000
startup_message off
vbell off
caption always "%{= wb} %-w %{=bu dr}%n %t %{-} %+w"
bind s
escape ^Oo

最後の行だけ違いますが、これはエスケープキーを Ctrl + a から Ctrl + o に変える設定です。
こうしているのは、screen から emacs を起動するためです。
emacs で「Ctrl + a (行の先頭にジャンプ)」を使えないというのは致命的ですが、「Ctrl + o」は普段使わないキーバインド(確か1行下に改行追加だったと思う。うろおぼえ)なので使えなくても何も問題ありません。
@ さんに教えてもらいました。

エスケープキーのキーバインドをどうするか悩む場合は、以下のページが参考になります。

screen's Wiki - エスケープキーの選択

(私が)よく使うキーバインド

便宜上エスケープを ^A で書いてますが、適宜読み替えてください。
同時押しじゃないことに注意。

キーバインド 説明
最後に使ったウィンドウに戻る ^A, ^A
左のウィンドウに移動 ^A, n
右のウィンドウに移動 ^A, p
指定した番号のウィンドウに移動 ^A, [番号]
新しいウィンドウを作る ^A, c
現在のウィンドウに名前をつける ^A, shift + A
detach する ^A, d

作業の開始と終了

私の場合、開始時は「ログイン → screen 起動」とし、終了時は「detach(Ctrl + o, d) → exit」としています。
そんな変なことはしてません。

サーバ再起動後の screen 起動時に、好みの状態でウィンドウを開く

この週末にサーバを落としたので、OS を起動してから screen を走らせて順々にウィンドウを開こうとしたのですが、あまりに面倒なので自動化することにしました。

screen -t [title] [number] [command]

.screenrc に上記のように書いておけば、「ウィンドウ番号 number、ウィンドウ名 title でウィンドウを開く。開いたときに command を実行する」
といった感じで自動で複数のウィンドウを次々オープンできるようになります。
私の場合、以下のように使っています。

screen -t emacs 0 emacs
screen -t local 1
screen -t master 2 ssh <serverA>
screen -t worker 3 ssh <serverB>

他に便利なtipsがありましたら教えてください。