--- 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