screenのメモ

リージョンの分割やセッションのアタッチ・デタッチができたりなど、なにかと便利なscreenですが機能はそれくらいしか知らず、全く使いこなせていなかったので、これを機会に少し調べてみたのでした。
完全に使いこなせるようになるにはどれくらいかかるかな……!
環境:Ubuntu 10.10 64bit / Screen version 4.00.03jw4 (FAU) 2-May-06 / man screen

キーバインドの確認

(C-a ?)でキーバインドの一覧が表示される。

設定の上書き

$ screen -c file

$HOME/.screenrc に上書きする形でfileに渡されたファイルの設定を適用する。

セッション

screenを起動中に

$ screen -d

をするとデタッチされる。(または (C-a d) を入力する)
セッションをアタッチする場合には

$ screen -r

を実行する。セッションが複数ある場合は $ screen -r プロセスID で指定する。
セッションの個数やプロセスIDの調べ方は、

$ screen -ls

で。(もしくは $ screen -list で)

ウィンドウ

1つの端末内で複数のウィンドウを起動(C-a c)できたりなど。
ウィンドウの選択は(C-a ')でプロンプトが表示され(0..9を入力してEnterで移動)、
(C-a ")だと一覧で表示される(jkもしくはカーソルキーで上下移動)。
(C-a w), (C-a C-w)では表示のみ。(切り替えはできない)
(C-a [0..9])で直接そのウィンドウに移動することも可能。
(C-a SPACE), (C-a n), (C-a C-n)で次のウィンドウへ移動する。
(C-a BACKSPACE), (C-a h), (C-a p), (C-a C-p)で前のウィンドウへ移動する。
(C-a -)でブランクウィンドウが表示される。


(C-a k), (C-a C-k)でカレントウィンドウを削除する。( $ exit と同じ?)
(C-a l), (C-a C-l)でウィンドウの再描画をする。


(C-a A)でそのウィンドウのタイトルを変更。


(C-a r), (C-a C-r)で折り返しの切り替え。

リージョン

(C-a S)で縦分割(Vimでの (^W s)、xyzzyでの (C-x 2))
(C-a |)で横分割(Vimでの (^W v)、xyzzyでの (C-x 5))*1
(C-a TAB)で分割したリージョンの移動。
(C-a X)でカレントリージョンの削除。
(C-a Q)でカレントリージョン以外の削除。

コピー

(C-a [), (C-a C-[), (C-a ESC)でコピーモードに入る。
キャレットの移動はVi風のキーバインド(h,j,k,l,0,^,$,g,G,w,b,e,W,E,^F,^B)で。
検索もVi風の(/, ?)で。ただし(n, N)で移動はできない。
マーキングは(SPACE)で。マーキングは始点を決めたあと、終点で再度(SPACE)を押すとコピーされ、コピーモードを抜ける。
その行すべてを選択する場合は(y)で。行をコピーしてコピーモードを抜ける場合は(Y)を。
(v)で":set nu"と":set nonu"ができるみたい?
ペーストは(C-a ])で。


まだまだ機能はあるけど、とりあえずこんなところかな?最初はこれらを普通に使えるようになろうかな。




追記
ちょっと見辛いのでリストにしてみた。

キーバインド 動作
C-a ? キーバインド一覧
C-a d デタッチ
C-a c ウィンドウの起動
C-a ' ウィンドウの選択
C-a " ウィンドウの選択
C-a w, C-a C-w ウィンドウ一覧
C-a [0..9] ウィンドウ切り替え
C-a SPACE, C-a n, C-a C-n 次のウィンドウへ移動
C-a BACKSPACE, C-a h, C-a p, C-a C-p 前のウィンドウへ移動
C-a - ブランクウィンドウの表示
C-a k, C-a C-k カレントウィンドウを削除
C-a l, C-a C-l ウィンドウの再描画
C-a A ウィンドウタイトルの変更
C-a r, C-a C-r 折り返しの切り替え
C-a S 縦分割
C-a (縦棒) 横分割
C-a TAB 分割したリージョンの移動
C-a X カレントリージョンの削除
C-a Q カレントリージョン以外の削除
C-a [, C-a C-[, C-a ESC コピーモードに入る
C-a ] ペースト

*1:横分割対応版のみ。UbuntuはできたがRHELはできなかった