# Call `zprof` to profile all calls in the current shell # Uncomment here and at the bottom of the file, then fully reopen a terminal # zmodload zsh/zprof path=( /opt/homebrew/bin /opt/homebrew/sbin "$GOPATH/bin" "$HOME/.cargo/bin" "$HOME/.local/bin" $path ) # De-dupe path entries typeset -U path # Install oh-my-zsh if it doesn't exist if [ ! -d "$HOME/.oh-my-zsh/" ] then sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" fi export ZSH="$HOME/.oh-my-zsh" # Install the zsh-autosuggestions plugin if it doesn't exist if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ] then git clone https://github.com/zsh-users/zsh-autosuggestions "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" fi plugins=( fzf virtualenvwrapper zsh-autosuggestions ) # Disable the startup update checks zstyle ':omz:update' mode disabled export ZSH_THEME="fb-custom" # Hyphen insensitive completion, `-` and `_` are treated as interchangeable export HYPHEN_INSENSITIVE="true" # Vim mode setup set -o vi # ZSH options setopt no_clobber # Do not clobber files by default setopt hist_ignore_all_dups # Replace old history with the newest call to an identical call setopt hist_ignore_space # Remove history lines that start with spaces setopt share_history # Share history between zsh instances without needing explicit sharing setopt auto_param_slash # Auto append a slash instead of a space if the completion is a dir setopt extended_glob null_glob # Use Bash-like globbing # Experimental setopt append_history inc_append_history setopt no_case_glob no_case_match # Completion options # Give descriptions of what the types of completions given zstyle ':completion:*:descriptions' format '%U%B%d%b%u' # Give an actual output when there is no match zstyle ':completion:*:warnings' format '%BNo matches for: %d%b' # Autoload keychain for ssh-agent handling if it is installed if command -v keychain &> /dev/null then eval "$(keychain --eval --quiet --nogui --noask)" fi # Inclusion of files to extend the configuration # From a theme to local specific changes, and grouping functions/aliases/exports include_files=( ".config/zsh/zsh_local.zsh" ".config/zsh/zsh_aliases.zsh" ".config/zsh/zsh_exports.zsh" ".config/zsh/zsh_functions.zsh" ) for file in "${include_files[@]}"; do full_path="$HOME/$file" if [ ! -f "$full_path" ]; then touch "$full_path" fi source "$full_path" done source "$ZSH/oh-my-zsh.sh" # Call to zprof for startup timings # zprof