setopt PROMPT_SUBST PROMPT="%2~ %B" # A: autoenv # V: virtualenv # M: laxed umask PROMPT+='${(j::)psvar}' PROMPT+="%(1j.%j.)%b" PROMPT+='%U${vcs_info_msg_0_}%u' PROMPT+="%(?.. %S%?%s)" PROMPT+='%(1S. %B${SECONDS}%b.)' PROMPT+='%B%F{magenta}%#%f%b ' function zle-line-init zle-keymap-select { local ccolour=red [[ ${KEYMAP} == vicmd ]] || ccolour=green printf "\e]12;${ccolour}\e\\" [[ "$#_autoenv_stack_entered" -eq 0 ]] && psvar=(${psvar#A}) || { [[ -n "${psvar[(r)A]}" ]] || psvar=(A $psvar) } [[ -z "$VIRTUAL_ENV" ]] && psvar=(${psvar#V}) || { [[ -n "${psvar[(r)V]}" ]] || psvar=(V $psvar) } [[ `umask` == "077" ]] && psvar=(${psvar#M}) || { [[ -n "${psvar[(r)M]}" ]] || psvar=("M" $psvar) } zle reset-prompt } zle -N zle-line-init zle -N zle-keymap-select preexec() { printf "\e]12;green\e\\" SECONDS=0 } precmd() { printf "\a\e]2;\e\\" [[ -n "$NO_VCS_INFO" ]] || vcs_info }