status line の title 切り替えを修正

# GNU screen title
if [ "$TERM" = "screen" ]; then
  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])
        ;;
      ls)
        return
        ;; 
      cd)
        if (( $#cmd == 2)); then
          cmd[1]=$cmd[2]:t
        else
          cmd[1]="~"
        fi
        change_status_title $cmd[1]
        return
        ;;
      vim|vi|gvim)
        if (( $#cmd == 2)); then
          cmd[1]="v:$cmd[2]:t"
        fi
        change_status_title $cmd[1]
        return
        ;;
      *)
        change_status_title $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
  }

  change_status_title() {
    echo -n "^[k$1^[??"
  }
fi

新たに status line の title を簡単に変更できるように関数 change_status_title を定義し、vi を実行した際に 'v:ファイル名' となるよう修正した。