dotfiles/.config/zsh/.zshrc

68 lines
2.0 KiB
Bash

# `.zshrc' is sourced in interactive shells. It should contain
# commands to set up aliases, functions, options, key bindings, etc.
autoload -U colors && colors
# Options
setopt auto_cd
# History
setopt EXTENDED_HISTORY
setopt SHARE_HISTORY
setopt APPEND_HISTORY
# setopt INC_APPEND_HISTORY # unexpected last result with multiple open terminals
setopt HIST_REDUCE_BLANKS
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=$XDG_CACHE_HOME/zshhistory
# Corrections
setopt CORRECT
setopt CORRECT_ALL
# Completion
fpath=($ZDOTDIR/completions $fpath)
autoload -U compinit
zstyle ':completion:*' menu select
zmodload zsh/complist
compinit
_comp_options+=(globdots) # include hidden files
# Keybindings
bindkey -e # force Emacs state, even with $EDITOR=nvim
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey -s '^L' '^Uclear^M' # clear using alias
# edit line in editor w/ ctrl-k (from Luke Smith's .zshrc)
autoload edit-command-line; zle -N edit-command-line
bindkey '^k' edit-command-line
# Aliases
[ -f "$E_SCRIPTS_DIR/aliases.sh" ] && source "$E_SCRIPTS_DIR/aliases.sh"
# zsh-specific aliases
# clear zsh history: Adapted from Novimatrem: https://gitlab.com/Novimatrem/clear-bash-history
alias czh="echo 'Fully clearing history, then exiting...' && cat /dev/null > $XDG_CACHE_HOME/zshhistory && history -p && exit"
# Prompt
PROMPT="%K{238}%F{104}%n%f%k%K{238}%F{104}@%f%k%K{238}%F{104}%m%f%k%K{238}%F{104}:%2~> %f%k"
# Plugins! I try to keep as few as possible
# Cloned from bootstrap file, run `git -C .config/zsh/autocomplete pull' to update
source $ZDOTDIR/autocomplete/zsh-autocomplete.plugin.zsh
zstyle ':autocomplete:*' min-input 1
zstyle ':autocomplete:*' min-delay 0.25
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT=\$vcs_info_msg_0_
zstyle ':vcs_info:git:*' formats '%F{240}(%b)%r%f'
zstyle ':vcs_info:*' enable git
# This must be placed at the end
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh