# HG changeset patch # User Meredith Howard # Date 1571438278 18000 # Node ID afc9c88b48979332f6b0f7bc2a78778f38fbd109 # Parent fb0c343bb87241f2469ff39e845bd448c748feab fix all vi mode special bindings diff --git a/.zshrc b/.zshrc --- a/.zshrc +++ b/.zshrc @@ -46,8 +46,33 @@ setopt interactive_comments export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help" -bindkey '\eOA' up-line-or-beginning-search -bindkey '\eOB' down-line-or-beginning-search +# Altered from what's shown on Arch wiki +[[ -n "${terminfo[khome]}" ]] && bindkey -- "${terminfo[khome]}" beginning-of-line +[[ -n "${terminfo[kend]}" ]] && bindkey -- "${terminfo[kend]}" end-of-line +[[ -n "${terminfo[kich1]}" ]] && bindkey -- "${terminfo[kich1]}" overwrite-mode +[[ -n "${terminfo[kbs]}" ]] && bindkey -- "${terminfo[kbs]}" backward-delete-char +[[ -n "${terminfo[kdch1]}" ]] && bindkey -- "${terminfo[kdch1]}" delete-char +[[ -n "${terminfo[kcuu1]}" ]] && bindkey -- "${terminfo[kcuu1]}" up-line-or-beginning-search +[[ -n "${terminfo[kcud1]}" ]] && bindkey -- "${terminfo[kcud1]}" down-line-or-beginning-search +[[ -n "${terminfo[kcub1]}" ]] && bindkey -- "${terminfo[kcub1]}" backward-char +[[ -n "${terminfo[kcuf1]}" ]] && bindkey -- "${terminfo[kcuf1]}" forward-char +[[ -n "${terminfo[kpp]}" ]] && bindkey -- "${terminfo[kpp]}" beginning-of-buffer-or-history +[[ -n "${terminfo[knp]}" ]] && bindkey -- "${terminfo[knp]}" end-of-buffer-or-history +[[ -n "${terminfo[kcbt]}" ]] && bindkey -- "${terminfo[kcbt]}" reverse-menu-complete + +# Finally, make sure the terminal is in application mode, when zle is +# active. Only then are the values from $terminfo valid. +if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then + autoload -Uz add-zle-hook-widget + function zle_application_mode_start { + echoti smkx + } + function zle_application_mode_stop { + echoti rmkx + } + add-zle-hook-widget -Uz zle-line-init zle_application_mode_start + add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop +fi source ~/.profile.common