# History configuration HISTFILE=~/.zhistory HISTSIZE=10000 SAVEHIST=10000 # Allow for command substitution in PS1 to have a common prompt with bash setopt promptsubst # Append to history to avoid losing commands when multiple shells are open setopt appendhistory # Show an error when a globbing expansion doesn't find any match setopt nomatch # List on ambiguous completion and Insert first match immediately setopt autolist menucomplete # Don't add duplicates nor commands starting with a space to the history setopt histignoredups histignorespace # Use pushd when cd-ing around setopt autopushd pushdminus pushdsilent # Use single quotes in string without the weird escape tricks setopt rcquotes # Single word commands can resume an existing job setopt autoresume # Those options aren't wanted unsetopt autocd beep extendedglob notify # Use the emacs keybindings bindkey -e # Completion configuration zstyle :compinstall filename '/home/ambroisie/.zshrc' autoload -Uz compinit compinit # Import my profile on interactive shells source ~/.profile # Import my aliases source ~/.aliases # Import some useful functions source ~/.functions # Enable Shift-Tab to go backwards in completion list bindkey '^[[Z' reverse-menu-complete # Style the completion a bit zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' ## add colors to processes for kill completion zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' # match uppercase from lowercase zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # Filename suffixes to ignore during completion (except after rm command) zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' \ '*?.old' '*?.pro' # command for process lists, the local web server details and host completion # on processes completion complete all user processes zstyle ':completion:*:processes' command 'ps -au$USER' # Completion formatting and messages zstyle ':completion:*' verbose yes zstyle ':completion:*:descriptions' format '%B%d%b' zstyle ':completion:*:messages' format '%d' zstyle ':completion:*:warnings' format 'No matches for: %d' zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b' # SSH Completion zstyle ':completion:*:scp:*' tag-order \ files users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *' zstyle ':completion:*:scp:*' group-order \ files all-files users hosts-domain hosts-host hosts-ipaddr zstyle ':completion:*:ssh:*' tag-order \ users 'hosts:-host hosts:-domain:domain hosts:-ipaddr"IP\ Address *' zstyle ':completion:*:ssh:*' group-order \ hosts-domain hosts-host users hosts-ipaddr # Hostname completion # 1. All /etc/hosts hostnames are in autocomplete # 2. If you have a comment in /etc/hosts like #%foobar.domain, # then foobar.domain will show up in autocomplete! zstyle ':completion:*' hosts $(awk '/^[^#]/ {print $2 $3" "$4" "$5}' /etc/hosts \ | grep -v ip6- && grep "^#%" /etc/hosts | awk -F% '{print $2}') # fish-like syntax high-lighting for interactive commands source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh # Display the computer's name in ASCII art cat /etc/issue # import my prompt source ~/.zsh_prompt