+}
+
+## 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:*' get-revision true
+zstyle ':vcs_info:git*' formats "%%F{green}[%b]%m%u%c%%f %S"
+zstyle ':vcs_info:git*' actionformats "%%F{red}(%a) %%F{green}[%b]%m%u%c%%f %S"
+
+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