はじめに
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行下に改行追加だったと思う。うろおぼえ)なので使えなくても何も問題ありません。
@yasushia さんに教えてもらいました。
エスケープキーのキーバインドをどうするか悩む場合は、以下のページが参考になります。
(私が)よく使うキーバインド
便宜上エスケープを ^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がありましたら教えてください。