# Exec general init script source ~/.initsh # If not running interactively, don't do anything else case $- in *i*) ;; *) return;; esac # Set up the prompt autoload -Uz promptinit promptinit prompt default setopt histignorealldups sharehistory # Use vi keybindings even if our EDITOR is set to emacs bindkey -v # Remove delay when entering normal mode (vi) KEYTIMEOUT=5 # 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 [[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line [[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line [[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode [[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char [[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char [[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-history [[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-history [[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char [[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char [[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history [[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history [[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" 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 # Keep 100.000 lines of history within the shell and save it to ~/.zsh_history HISTSIZE=100000 SAVEHIST=100000 HISTFILE=~/.zsh_history SHARE_HISTORY=1 HIST_IGNORE_DUPS=1 HIST_FIND_NO_DUPS=1 NO_HIST_BEEP=1 # Use modern completion system autoload -Uz compinit compinit zstyle ':completion:*' auto-description 'specify: %d' zstyle ':completion:*' completer _expand _complete _correct _approximate zstyle ':completion:*' format 'Completing %d' zstyle ':completion:*' group-name '' zstyle ':completion:*' menu select=2 zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*' list-colors '' zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*' zstyle ':completion:*' menu select=long zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s zstyle ':completion:*' use-compctl false zstyle ':completion:*' verbose true zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' # Autocompletion of command line switches for aliases setopt COMPLETE_ALIASES # Disable autocorrect unsetopt correct_all # Don't show username and machine name export DEFAULT_USER="$USER" # Don't indent prompt export ZLE_RPROMPT_INDENT=0 # Powerlevel9k [ -n "$POWERLEVEL9K_THEME" ] && source "$POWERLEVEL9K_THEME" ## Settings POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir dir_writable vcs) POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status background_jobs command_execution_time time) POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 ## Style POWERLEVEL9K_STATUS_ERROR_BACKGROUND='009' # lightred POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND='009' # lightred # Autosuggestions [ -n "$ZSH_AUTOSUGGEST_PATH" ] && source "$ZSH_AUTOSUGGEST_PATH" ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE=fg=7 ZSH_AUTOSUGGEST_USE_ASYNC=1 # Syntax highlighting [ -n "$ZSH_SYNTAX_HIGHLIGHTING_PATH" ] && source "$ZSH_SYNTAX_HIGHLIGHTING_PATH" [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh