# ════════════════════════════════════════════════════════════ # 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