87 lines
4.9 KiB
Bash
87 lines
4.9 KiB
Bash
# ════════════════════════════════════════════════════════════
|
|
# Completion Settings
|
|
# ════════════════════════════════════════════════════════════
|
|
|
|
# ═══ Инициализация ═════════════════════════════════════════
|
|
autoload -Uz compinit
|
|
|
|
# Проверять новые автодополнения раз в день
|
|
if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then
|
|
compinit
|
|
touch ${ZDOTDIR}/.zcompdump
|
|
else
|
|
compinit -C
|
|
fi
|
|
|
|
# ═══ Кэш дополнений ════════════════════════════════════════
|
|
zstyle ':completion:*' use-cache on
|
|
zstyle ':completion:*' cache-path "${XDG_CACHE_HOME}/zsh/zcompcache"
|
|
|
|
# Создать директорию для кэша если не существует
|
|
[[ ! -d "${XDG_CACHE_HOME}/zsh" ]] && mkdir -p "${XDG_CACHE_HOME}/zsh"
|
|
|
|
# ═══ Меню выбора ═══════════════════════════════════════════
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion:*' group-name ''
|
|
zstyle ':completion:*' verbose yes
|
|
|
|
# ═══ Форматирование ════════════════════════════════════════
|
|
zstyle ':completion:*:descriptions' format '%F{blue}-- %d --%f'
|
|
zstyle ':completion:*:messages' format '%F{purple}-- %d --%f'
|
|
zstyle ':completion:*:warnings' format '%F{red}-- no matches found --%f'
|
|
zstyle ':completion:*:corrections' format '%F{yellow}-- %d (errors: %e) --%f'
|
|
|
|
# ═══ Сопоставление ═════════════════════════════════════════
|
|
zstyle ':completion:*' matcher-list \
|
|
'm:{a-zA-Z}={A-Za-z}' \
|
|
'r:|[._-]=* r:|=*' \
|
|
'l:|=* r:|=*'
|
|
|
|
# ═══ Цвета ═════════════════════════════════════════════════
|
|
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
|
|
|
# ═══ Процессы ══════════════════════════════════════════════
|
|
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
|
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w"
|
|
|
|
# Не предлагать уже использованные опции
|
|
zstyle ':completion:*:*:kill:*' ignore-line yes
|
|
|
|
# ═══ Команды ═══════════════════════════════════════════════
|
|
# Игнорировать внутренние функции (начинающиеся с _)
|
|
zstyle ':completion:*:functions' ignored-patterns '_*'
|
|
|
|
# ═══ Директории ════════════════════════════════════════════
|
|
zstyle ':completion:*' special-dirs true
|
|
zstyle ':completion:*' list-dirs-first true
|
|
|
|
# Игнорировать родительскую директорию
|
|
zstyle ':completion:*:cd:*' ignore-parents parent pwd
|
|
|
|
# ═══ Хосты ═════════════════════════════════════════════════
|
|
# Читать хосты из ~/.ssh/config
|
|
if [[ -r ~/.ssh/config ]]; then
|
|
local _ssh_hosts=(${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
|
|
zstyle ':completion:*:ssh:*' hosts $_ssh_hosts
|
|
zstyle ':completion:*:scp:*' hosts $_ssh_hosts
|
|
fi
|
|
|
|
# ═══ Man страницы ══════════════════════════════════════════
|
|
zstyle ':completion:*:manuals' separate-sections true
|
|
zstyle ':completion:*:manuals.(^1*)' insert-sections true
|
|
|
|
# ═══ Автодополнение для sudo ═══════════════════════════════
|
|
zstyle ':completion:*:sudo:*' command-path \
|
|
/usr/local/sbin \
|
|
/usr/local/bin \
|
|
/usr/sbin \
|
|
/usr/bin \
|
|
/sbin \
|
|
/bin
|
|
|
|
# ═══ Массивы ═══════════════════════════════════════════════
|
|
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
|
|
|
|
# ═══ Расширения ════════════════════════════════════════════
|
|
zstyle ':completion:*' squeeze-slashes true
|