+}
+
+## prompt
+setopt prompt_subst
+PROMPT='%F{$VICOL}%n%f@%F{$VICOL}%m%f%(?../%F{red}$?%f)%# '
+RPROMPT='%F{yellow}${vcs_info_msg_0_:-%~}%f %T'
+
+function zle-line-init zle-keymap-select {
+ VICOL="${${KEYMAP:/vicmd/red}:/(main|viins)/green}"
+ zle reset-prompt
+}
+zle -N zle-line-init
+zle -N zle-keymap-select
+
+autoload -Uz vcs_info
+zstyle ':vcs_info:*' enable git
+zstyle ':vcs_info:git*' formats "%c%u%%F{green}%b%%f/%%F{yellow}%S%%f"
+zstyle ':vcs_info:git*' actionformats "%%F{red}(%a)%%f %c%u%%F{green}%b%%f/\
+%%F{yellow}%S%%f"
+zstyle ':vcs_info:git*' check-for-changes true
+zstyle ':vcs_info:git*' stagedstr "%F{blue}+"
+zstyle ':vcs_info:git*' unstagedstr "%F{red}*"
+
+function precmd {
+ print -Pn "\e]0;%(1j,%j,)%#${SSH_CLIENT+$USER@$HOST:}%~\a"
+ vcs_info
+ if ((SECONDS - _exectime >= 5)) {
+ # bell if exec takes 5s
+ print "\a"
+ }
+}
+function preexec {
+ # change Xorg title
+ print -Pnf "\e]0;%s\a" "%#${SSH_CLIENT+$USER@$HOST:}$1"
+ # save last exec time
+ _exectime=$SECONDS