screen備忘録
とりあえずscreenって何っていうのは以下参照で
OS Xにはビルトインされてるので、Terminalで
$ screen
するとすぐ使える。
Screenを使うと実質Terminalの画面を縦に分割できてとても便利。
コマンドこれだけあればとりあえず大丈夫そう
以下<C+t>
はデフォルトは<C+a>
になってるので、.screenrcで変えておく(好みで)
<C+t> c |
新しいウィンドウをシェルをつくる |
<C+t> n(p) |
ウィンドウ間を行き来(n: 次, p: 前) |
<C+t> | |
ウィンドウを縦に分割 |
<C+t> tab |
分割したウィンドウ間を移動 |
<C+t> x |
分割したウィンドウで、現在選択してるウィンドウを破棄 |
<C+t> d |
screenをデタッチ |
<C+t> |
で分割した後は<C+t> c
で新しくウィンドウを作ると使えるようになる。
あとzshを使ってる場合は.zshrcに以下貼っておくと、zshの一番下にscreenのウィンドウ一覧と履歴が表示できて幸せになれる
※ 2度ほど出てくる:t\\"
のところは:t^[\\"
に置き換える。
# screen auto startup
# [username]のところは置き換えて使う if [ $TERM != "screen" -a "`screen -ls | grep Attache`" = "" ]; then screen -US [username] -xRR fi #screenのステータスラインに最後に実行したコマンドを表示 if [ "$TERM" = "screen" ]; then #chpwd () { echo -n "_`dirs`\\" } preexec() { # see [zsh-workers:13180] # http://www.zsh.org/mla/workers/2000/msg03993.html emulate -L zsh local -a cmd; cmd=(${(z)2}) case $cmd[1] in fg) if *1; then cmd=(builtin jobs -l %+) else cmd=(builtin jobs -l $cmd[2]) fi ;; %*) cmd=(builtin jobs -l $cmd[1]) ;; cd) if *2; then cmd[1]=$cmd[2] fi ;& *) echo -n "k$cmd[1]:t\\" return ;; esac local -A jt; jt=(${(kv)jobtexts}) $cmd >>(read num rest cmd=(${(z)${(e):-\$jt$num}}) echo -n "k$cmd[1]:t\\") 2>/dev/null } chpwd () {} fi