# ZLE set -o emacs # helper repo export SETTING_DIR=$HOME/helper source $SETTING_DIR/tools/init/load-settings.sh fpath=($SETTING_DIR/zsh $fpath) # Options setopt extended_glob setopt HIST_SAVE_NO_DUPS # Do not write a duplicate event to the history file. # Edit Command Line autoload -Uz edit-command-line; zle -N edit-command-line bindkey -- "^X^E" edit-command-line # Enable completion autoload -Uz compinit; compinit _comp_options+=(globdots) # With hidden files zstyle ':completion:*' menu select zstyle ':completion::complete:*' gain-privileges 1 # PS1 with git status at right autoload -Uz add-zsh-hook add-zsh-hook precmd precmd function precmd() { RIGHT=$(NUM=$($SETTING_DIR/tools/git/check-repos.sh -n); (( $NUM != 0 )) && echo $NUM) PROMPT='%B%(?:%F{green}%m%f:%K{red}%F{black}%m%f%k)%f%F{cyan} %c%f%b ' RPROMPT="%B%K{red}%F{black}${RIGHT}%f%k%b" } # Directory Stack setopt AUTO_PUSHD # Push the current directory visited on the stack. setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack. setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd. alias d='dirs -v' for index ({1..9}) alias "$index"="cd +${index}"; unset index # create a zkbd compatible hash; # to add other keys to this hash, see: man 5 terminfo typeset -g -A key key[Home]="${terminfo[khome]}" key[End]="${terminfo[kend]}" key[Insert]="${terminfo[kich1]}" key[Backspace]="${terminfo[kbs]}" key[Delete]="${terminfo[kdch1]}" key[Up]="${terminfo[kcuu1]}" key[Down]="${terminfo[kcud1]}" key[Left]="${terminfo[kcub1]}" key[Right]="${terminfo[kcuf1]}" key[PageUp]="${terminfo[kpp]}" key[PageDown]="${terminfo[knp]}" key[Shift-Tab]="${terminfo[kcbt]}" # setup key accordingly #bindkey -- "\C-A" beginning-of-line #bindkey -- "\C-E" end-of-line #bindkey -- "\C-d" delete-char #bindkey -- "\C-h" backward-delete-char #bindkey -- "\Ed" delete-word #bindkey -- "\C-w" backward-delete-word #bindkey -- "\C-k" kill-line #bindkey -- "\C-p" up-line-or-history #bindkey -- "\C-n" down-line-or-history #bindkey -- "\C-b" backward-char #bindkey -- "\C-f" forward-char #bindkey -- "\Eb" backward-word #bindkey -- "\Ef" forward-word #bindkey -- "\C-v" quoted-insert #bindkey -- "\E." insert-last-word #bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history #bindkey -- "${key[PageDown]}" end-of-buffer-or-history #bindkey -- "${key[Shift-Tab]}" reverse-menu-complete #bindkey -- "${key[Insert]}" overwrite-mode # Common shell options alias ls='ls --color' alias grep='grep --color' # Quick jump to parent folders source ~/helper/zsh/bd.zsh # 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