Speed up shell startup: remove duplicate compinit, lazy-load pyenv/nvm

- Remove manual compinit in .zshrc (oh-my-zsh already handles it),
  eliminating a redundant ~350ms call
- Lazy-load pyenv init (~710ms) until first use, matching the existing
  kubectl lazy-load pattern
- Lazy-load nvm init for when it gets installed in the future
This commit is contained in:
Viktor Barzin 2026-02-15 18:31:04 +00:00
parent e284e4623b
commit 8db9aa926d
3 changed files with 17 additions and 15 deletions

View file

@ -1,6 +1,14 @@
# NVM (Node Version Manager) configuration
# Auto-loaded by oh-my-zsh from $ZSH_CUSTOM/tools/
# Lazy-loaded: defers nvm init until first use
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
if [[ -s "$NVM_DIR/nvm.sh" ]]; then
function nvm() {
unfunction nvm
\. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
nvm "$@"
}
fi

View file

@ -1,11 +1,15 @@
# Pyenv configuration
# Pyenv configuration (lazy-loaded)
# Auto-loaded by oh-my-zsh from $ZSH_CUSTOM/tools/
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv >/dev/null 2>&1; then
eval "$(pyenv init - zsh)"
if (( $+commands[pyenv] )); then
function pyenv() {
unfunction pyenv
eval "$(command pyenv init - zsh)"
pyenv "$@"
}
fi
# Virtualenvwrapper

View file

@ -1,13 +1,3 @@
# ============================================================================
# Fast compinit - cache completions, regenerate once daily
# ============================================================================
autoload -Uz compinit
if [[ -n ${ZDOTDIR:-$HOME}/.zcompdump(#qN.mh+24) ]]; then
compinit
else
compinit -C
fi
# ~/.zshrc - Zsh configuration for interactive shells
# Customizations are in ~/.oh-my-zsh/custom/*.zsh (auto-loaded)