60 lines
2.0 KiB
Bash
60 lines
2.0 KiB
Bash
#
|
|
# Autocompletions
|
|
#
|
|
|
|
# Also see https://gist.github.com/ctechols/ca1035271ad134841284
|
|
autoload -Uz compinit
|
|
if [[ -n ${HOME}/.zcompdump(#qN.mh+24) ]]; then
|
|
compinit;
|
|
else
|
|
compinit -C;
|
|
fi;
|
|
|
|
# Make it case insensitive
|
|
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
|
|
|
# Completion menu
|
|
setopt menu_complete
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion:*:warnings' format 'Nuffin there :('
|
|
zstyle ':completion:*' expand prefix suffix
|
|
zstyle ':completion:*' completer _expand_alias _complete _approximate
|
|
zstyle ':completion:*:approximate:*' max-errors 4
|
|
zstyle ':completion:*' special-dirs true
|
|
|
|
# Completion correction
|
|
setopt correct
|
|
zstyle ':completion:*:correct:*' insert-unambiguous true
|
|
zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
|
|
zstyle ':completion:*:correct:*' original true
|
|
zstyle ':completion:correct:' prompt 'correct to: %e'
|
|
|
|
# Completion cache
|
|
zstyle ':completion::complete:*' use-cache 1
|
|
zstyle ':completion::complete:*' cache-path "${ZSHUPER_DIR}/.cache/completion"
|
|
|
|
# Username completion
|
|
ignored_users=(
|
|
$(cat /etc/passwd | cut -d':' -f1,6 | sed 's/:/ /g' | awk '$2 !~ /^ *\/home/ {print $1}')
|
|
)
|
|
|
|
zstyle ':completion:*:*:*:users' ignored-patterns $ignored_users
|
|
|
|
# Process killing
|
|
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
|
zstyle ':completion:*:*:*:*:processes' command "ps -u $(whoami) -o pid,user,comm -w -w"
|
|
|
|
# Hostname completions
|
|
[ -r ~/.ssh/known_hosts ] && _ssh_known_hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[\|]*}%%\ *}%%,*}) || _ssh_known_hosts=()
|
|
[ -r ~/.ssh/config ] && _ssh_hosts=($(cat ~/.ssh/config | sed -ne 's/Host[=\t ]//p')) || _ssh_hosts=()
|
|
[ -r /etc/hosts ] && : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}}} || _etc_hosts=()
|
|
|
|
hosts=(
|
|
"${_ssh_known_hosts[@]}"
|
|
"${_ssh_hosts[@]}"
|
|
"$_etc_hosts[@]"
|
|
localhost
|
|
)
|
|
|
|
zstyle ':completion:*' hosts $hosts
|