Files
dotfiles/dot_config/zsh/config/completion.zsh
T

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