GNU screen 自分用まとめ

今まで単純に nohup 的な使い方しかしてなかったので、もったいないから色んなとこを参考に環境を設定してみました。zsh と組み合わせるともっと便利らしいんですが、今はこれが精一杯。

.screenrc

startup_message off
escape ^j^j
autodetach on
defkanji utf-8
defencoding utf-8
encoding utf-8 utf-8
defscrollback 10000
hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"
bind n screen
bind h prev
bind j next
bind l windowlist
bind c copy
bind t title

起動画面は邪魔くさいのでオフ。
エスケープはデフォルトの Ctrl+a から Ctrl+j に変更してます。参考サイトによると、Ctrl+a だと emacs とかでバッティングするかららしいのですが、僕は単純に押しやすいのでそうしてます。
あとはスクリーン下に時間とウィンドウ名を表示します。

起動とか

・起動
# screen

・screen のリストを表示
# screen -ls
There are screens on:
        627.pts-0.debian        (08/13/08 13:45:27)     (Detached)
        571.pts-0.debian        (08/13/08 11:32:06)     (Detached)
2 Sockets in /var/run/screen/S-kohiro2.

・screen を再アタッチ(仮想端末が一個)
# screen -r

・screen を再アタッチ(仮想端末が複数)
# screen -r [PID]

-ls で現在の screen 状況が表示されます。アタッチ可能な screen が一個だけの場合は -r で一発ですが、複数あるときは PID を指定する必要があります。PID は -ls や -r 失敗時で表示されます。

コマンド

Ctrl+j でエスケープしたら、以下のコマンドを打ちます。

コマンド 説明
n 新規ウィンドウを作成
h 前のウィンドウに移動
j 次のウィンドウに移動
0-9 n番のウィンドウをアクティブにする
l ウィンドウリストを表示(j/k で移動、Enter で選択)
c コピーモード(スクロールバッファを vi チックな操作でさわれる)
t ウィンドウタブの名前変更
d デタッチ(screen から抜ける)

小ネタ

.screenrc のリロード

エスケープして

:source $HOME/.screenrc

設定を書き換えるたびに quit してましたが、これは超絶便利。