]> Sergey Matveev's repositories - dotfiles.git/blob - zsh/.zsh/rc/015prompt.zsh
Do not overwrite PS1 every time
[dotfiles.git] / zsh / .zsh / rc / 015prompt.zsh
1 setopt PROMPT_SUBST
2
3 PS1="%2~ %B"
4 PS1+='${(j::)psvar}'
5 PS1+="%(1j.%j.)%b"
6 PS1+='%U${vcs_info_msg_0_[1,-32]}%u'
7 PS1+="%(?..%S%?%s)"
8 PS1+='%(1S.%B${SECONDS}%b.)'
9 PS1+='%B%F{magenta}${_VIMODE}%f%b '
10
11 function zle-line-init zle-keymap-select {
12     [[ ${KEYMAP} == vicmd ]] && _VIMODE="+" || _VIMODE="%#"
13     [[ "$#_autoenv_stack_entered" -eq 0 ]] && psvar=(${psvar#A}) || {
14         [[ -n "${psvar[(r)A]}" ]] || psvar=(A $psvar)
15     }
16     [[ -z "$VIRTUAL_ENV" ]] && psvar=(${psvar#V}) || {
17         [[ -n "${psvar[(r)V]}" ]] || psvar=(V $psvar)
18     }
19     zle reset-prompt
20 }
21
22 zle -N zle-line-init
23 zle -N zle-keymap-select
24
25 preexec() {
26     SECONDS=0
27 }
28
29 precmd() {
30     printf "\a\033]2;\033\\"
31     vcs_info
32 }