시작 시간을 크게 늘리지 않고 zsh 대소문자를 구분하지 않고 탭 완료

시작 시간을 크게 늘리지 않고 zsh 대소문자를 구분하지 않고 탭 완료

그래서 oh-my-zsh를 제거하면 쉘이 상당한 지연(>0.1초)으로 시작하게 되므로 제거하고 싶습니다. 실제로 oh-my-zsh를 제거한 후 시작 시간이 0.02초가 되었는데 이제 수동으로 기능을 추가하기 시작했습니다. 무엇보다도 대소문자를 구분하지 않는 탭 완성입니다. 그래서 나는 다음과 같은 것을 추가했습니다.

autoload -U compinit compinit zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}'

내 .zshrc에. 그러나 이 작은 기능만으로도 시작 시간이 거의 3배로 늘어났지만 구문 강조 또는 자동 제안과 같은 다른 기능은 시작 시간에 전혀 영향을 미치지 않는 것 같습니다.

Bash에서는 성능 저하 없이 원하는 대로 대소문자를 구분하지 않고 완료할 수 있습니다 bind 'set completion-ignore-case on'(시작 시간 ~0.01초).

compinit이 무엇을 하는지는 모르지만 시작 속도를 크게 늦추지 않고 zsh에서 대소문자를 구분하지 않고 완료할 수 있는 방법이 있습니까?

답변1

그냥 Powerlevel10k를 사용하세요즉시 알림기능을 사용하면 시작 시간을 늦추지 않고 .zshrc에 원하는 것을 추가할 수 있습니다.

답변2

.zshrc 대신 .zlogin에 "compinit" 참조를 추가할 수 있으며 제 경우에는 로드 시간이 많이 향상되었습니다. 또한 하루에 한 번만 compinit을 다시 컴파일하는 테스트도 있습니다.

autoload -Uz zrecompile
autoload -Uz compinit
dump=$ZSH_COMPDUMP

# http://zsh.sourceforge.net/Doc/Release/Conditional-Expressions.html
if [[ -s $dump(#qN.mh+24) && (! -s "$dump.zwc" || "$dump" -nt "$dump.zwc") ]]; then
    compinit -i d $ZSH_COMPDUMP
    zrecompile $ZSH_COMPDUMP
fi
compinit -C

내 .zshenv에는 전역 구성 로드를 피하기 위해 다음이 있습니다.

unsetopt GLOBAL_RCS
skip_global_compinit=1
setopt noglobalrcs

관련 정보