screenまとめ


会社の同期に
「screen使ってないとかプゲラw」
と言われたので、調べる+使ってみる

screenとは

ひとつの端末で、複数の仮想端末を使うシステム。
これを使えば複数ターミナルと起動させてどれがどれだかみたいなことにならずに済む
Vimみたいに画面分割できてかっこよく作業できる
作業効率アップ間違いなし

インストール

MacPorts

# sudo port install screen

初期設定

~/.screenrcを作成する

autodetach on
bell_msg "^G"
defkanji utf-8
defencoding utf-8
encoding utf-8 utf-8
defscrollback 10000
escape ^Jj
startup_message off
vbell off
caption always "%{= wb} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wk} [%l] %{=b wb}%y/%m/%d(%D) %{=b wm}%c"

screenを初めて使うためのチュートリアル - Unix的なアレの設定をほぼコピペ
後日内容を理解する予定

起動

$ screen

基本操作

CTRL+j-c 画面(端末)の新規生成
CTRL+j-p 前の画面に移動
CTRL+j-n 次の画面に移動
CTRL+j-^j 直前作業していた画面に戻る
CTRL+j-A そのウィンドウに名前を付ける
CTRL+j-[0-9](^A-数字) 数字の画面に移動
CTRL+j-l リスト表示
CTRL+j-w 画面の一覧の表示
CTRL+j-k 現在の画面の起動プロセスを終了. exit でも可
CTRL+j-? 簡略キーバインド一覧

デフォルトでは、CTRL+Aでscreenコマンドを呼び出すが、上記設定の

escape ^Jj

の部分で、CTRL+jに変更されている。
気に入らなければ自分の好きなキーに割り振ればいい

コピー&ペースト

CTRL+j-[ コピーモード(画面上のキーカーソル移動)開始。viと同じキーマップでカーソル移動、Enter2回で指定範囲をコピー
CTRL+j-] コピーしたテキストを張り付け

画面分割

CTRL+j-S 画面を分割する。^j- で移動し、^j-c で画面を作成する
CTRL+j-Q 現在の画面を残して、画面分割を閉じる
CTRL+j- 分割した次の画面へ移動する

デタッチ&アタッチ

CTRL+j-d デタッチ。screen セッション(全体)を保存し、screen を起動する前のシェルに戻る
screen -ls デタッチ中のスクリーンを確認
screen -r [pid] リジューム or アタッチ。デタッチした screen セッションの復帰。pid はデタッチした screen セッションが1つならば省略も可能。
screen -x マルチアタッチ。既に開かれているセッションにアタッチすることができる。ローカルホスト自身で screen セッションを開き、他のコンピュータからそのホストにアクセス、screen -x することで、同じ画面を2つのコンピュータで共有したりできる。

縦に割る

screenはデフォでは、splitしかできない!終わってる!これじゃ使い物にならない!
ということで調べてみると、cvsに縦割りができるscreenがあるらしいということがわかったので早速インストール
New screen features available
が、Macではこのままではうまくいかないので、下のサイトを参考にインストール
Compiling screen from CVS on OSX for vertical split. : :wq – blog

$ cvs -z3 -d:pserver:address@hidden:/sources/screen co screen
$ cd screen/src
$ patch < /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/screen/files/patch-maxargs
$ patch < /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/screen/files/patch-windowsize
$ patch < /opt/local/var/macports/sources/rsync.macports.org/release/ports/sysutils/screen/files/patch-pty.c
$ ./configure --enable-colors256
$ make
$ make install

遂に縦に割れるscreenが使えるようになった!

CTRL+j-| 画面を縦に分割する

シェル起動時自動起動

.bashrc もしくは .zshrc 用

if [ $SHLVL = 1 ];then
  screen - xR
fi

これで、screenセッションがある場合接続し、なければ新しく作成する

まとめ

screenを使えば、次回作業のときまで環境をそのまま残しておけるので、どこまでやったか忘れずに済む。
縦分割の可能になったので、縦横に切りまくって遊べる!しかもかっこよく見える!
デスクトップにたくさんターミナルがあってどれがどれだかわからないってことから永遠におさらば!

これで作業効率アップ間違いなしだ!