2019-09-24 19:34:15 +00:00
|
|
|
# http://zsh.sourceforge.net/Doc/Release/Completion-System.html
|
2019-12-21 19:19:24 +00:00
|
|
|
# https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/completion.zsh
|
2019-09-24 19:34:15 +00:00
|
|
|
|
|
|
|
# load fancier completion menu which (most notably) supports `list-colors`
|
|
|
|
zmodload zsh/complist
|
|
|
|
zstyle ':completion:*' menu select
|
|
|
|
# show even more completion results
|
|
|
|
zstyle ':completion:*' verbose yes
|
|
|
|
|
2020-05-11 11:20:26 +00:00
|
|
|
zstyle ':completion:*' use-cache yes
|
|
|
|
zstyle ':completion::*' cache-path "$ZSH_CACHE_DIR"
|
2019-09-24 19:34:15 +00:00
|
|
|
|
|
|
|
# group completion result based on their categories
|
|
|
|
zstyle ':completion:*' group-name ''
|
|
|
|
# format for displaying category names
|
|
|
|
zstyle ':completion:*:descriptions' format '%F{yellow}[%d]%f'
|
|
|
|
|
|
|
|
# Sometimes zsh completion authors for whatever reason add descriptions for
|
|
|
|
# option values, but don't do describe the options themselves (e.g. ffmpeg,
|
|
|
|
# some options for GCC). In such cases description of an option can be inferred
|
|
|
|
# from the description of its value. That's the purpose of `auto-description`.
|
|
|
|
zstyle ':completion:*:options' auto-description '%d'
|
|
|
|
|
|
|
|
# case insensitive (all), partial-word and substring completion
|
|
|
|
zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*'
|
|
|
|
|
|
|
|
zstyle ':completion:*' list-dirs-first yes
|
|
|
|
# complete . and .. directories
|
|
|
|
# This is very useful when I just want to quickly look around inside a
|
|
|
|
# directory without running `ls`
|
|
|
|
zstyle ':completion:*' special-dirs yes
|
|
|
|
|
|
|
|
if [[ -n "$LS_COLORS" ]]; then
|
|
|
|
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
zstyle ':completion:*:processes' command "ps xo pid,user,cmd"
|
|
|
|
zstyle ':completion:*:processes-names' command "ps xho comm="
|
|
|
|
zstyle ':completion:*:processes' force-list always
|
|
|
|
|
2019-09-25 15:04:32 +00:00
|
|
|
_completion_get_hosts() {
|
2021-03-30 12:15:33 +00:00
|
|
|
print -r -- localhost
|
2021-02-13 15:51:25 +00:00
|
|
|
local line
|
|
|
|
< ~/.ssh/config while IFS= read -r line; do
|
|
|
|
if [[ "$line" =~ '^Host[[:blank:]]+(.*)[[:blank:]]*' ]]; then
|
2021-03-30 12:15:33 +00:00
|
|
|
print -r -- "${match[1]}"
|
2021-02-13 15:51:25 +00:00
|
|
|
fi
|
|
|
|
done
|
2019-09-25 15:04:32 +00:00
|
|
|
}
|
2020-05-11 11:20:26 +00:00
|
|
|
zstyle -e ':completion:*:hosts' hosts 'reply=("${(@f)$(_completion_get_hosts)}")'
|
|
|
|
|
|
|
|
autoload -U +X bashcompinit && bashcompinit
|