dotfiles/config/zsh/completion.zsh

73 lines
2.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Enable additional completions from packages in `/usr/local`.
[ -d "/usr/local/share/zsh/vendor-completions" ] \
&& fpath=("/usr/local/share/zsh/vendor-completions" $fpath)
zmodload zsh/complist
autoload -Uz compinit
compinit -d "$XDG_CACHE_HOME/zsh/.zcompdump"
# Include hidden files when completing.
_comp_options+=(globdots)
# Completion context pattern:
# :completion:<function>:<completer>:<command>:<argument>:<tag>
zstyle ':completion:*' completer _extensions _complete
# Match case-insensitively and on partial words.
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}'
# Activate caching for completions that may use it.
zstyle ':completion:*' use-cache true
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"
# List files in a format similar to `ls -l`.
zmodload zsh/stat # required for `file-list all`
disable stat # don't shadow external `stat` executable
zstyle ':completion:*' file-list all
# Don't complete on all path components, which would complete /u/b/z to /usr/bin/zsh.
zstyle ':completion:*' path-completion false
# Use tags as the group names.
zstyle ':completion:*' group-name ''
# Custom order for words in the command position.
zstyle ':completion:*:*:-command-:*:*' group-order builtins aliases functions commands
# Colors!
zstyle ':completion:*:*:*:*:descriptions' format '%F{green} %d%f'
zstyle ':completion:*:*:*:*:corrections' format '%F{yellow} %d%f'
zstyle ':completion:*:*:*:*:original' format '%F{yellow} %d%f'
zstyle ':completion:*:*:*:*:messages' format '%F{cyan} %d%f'
zstyle ':completion:*:*:*:*:warnings' format '%F{red} no matches%f'
zstyle ':completion:*:*:*:*:default' list-colors true
##################
# Menu selection #
##################
zstyle ':completion:*' menu select
zstyle ':completion:*:*:*:*:default' select-prompt '%K{yellow}%F{black}%l (%p)%f%k'
# Navigate the list with `hjkl`.
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
# Accept selected match and keep menu open.
bindkey -M menuselect 'p' accept-and-hold
# Accept selected match and restart completion (allows drilling down directories).
bindkey -M menuselect '\t' accept-and-infer-next-history
# Remove previously inserted matches.
bindkey -M menuselect 'u' undo
# Jump to first/last line.
bindkey -M menuselect 'g' beginning-of-history
bindkey -M menuselect 'G' end-of-history
# Page down/up.
bindkey -M menuselect 'f' vi-forward-word
bindkey -M menuselect 'b' vi-backward-word