screen導入

tmuxの記事がhotentryに出てたのでscreen入れた。

過去数回screen触ってみたけど、何故か挙動がおかしくてすぐやめていた。
しかし以下を~/.screenrcに、

hardstatus alwayslastline "[%02c] %-w%{=b bw}%n %t%{-}%+w"

以下を~/.zshrcに書いたら途端に便利に見えてきた。こいつとは長い付き合いになりそうだ。

show_window_title() {
    if [ "$TERM" = "screen" ]; then
      chpwd() { echo -n "^[_`dirs`^[\\" }
      preexec() {
        emulate -L zsh
        local -a cmd; cmd=(${(z)2})
        case $cmd[1] in
          fg)
              if (( $#cmd == 1 )); then
                cmd=(builtin jobs -l %+)
              else
                cmd=(builtin jobs -l $cmd[2])
              fi
              ;;
          %*)
              cmd=(builtin jobs -l $cmd[1])
              ;;
          cd)
              if (( $#cmd == 2 )); then
                cmd[1]=$cmd[2]
              fi
              ;;
          ls|clear)
              echo -n "^[k$ZSH_NAME^[\\"
              return
              ;;
          screen|pwd)
              return
              ;;
          *)
              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
}

show_window_title

ここで^[というのは制御文字らしいので、viでと打ち込んで表示される文字におきかえる。
やはり基本的な情報は常に見えていないと。
zshの本も買ったことだし、そちらも本格的にいじってみよう。


このへんのUnix文化はviを基調としてたりするから、馴染むのやたらが早いぜ。