perf(zsh): cache tool init, lazy-load, remove plugins

Startup: 150ms → 40ms (native), projected 10-30s → <1s (iSH)

- Cache mise/fzf/zoxide init output keyed on binary mtime
- zcompile all sourced files to bytecode at install time
- Lazy-load compinit (first Tab), fzf+widgets (first keystroke)
- Remove autosuggestions and syntax-highlighting plugins
- Switch mise to shims mode (no per-prompt hook)
- Conditional mkdir (skip if dirs exist)
- Remove TRAPINT/flash handler, cache session info
- Eliminate per-prompt subshell forks (REPLY pattern)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-24 18:08:40 +00:00
parent 53897ed9e9
commit ffd26e06d6
4 changed files with 98 additions and 114 deletions

View File

@@ -2,7 +2,7 @@
# -----------------------------------------------------------------------------
# Description:
# Configure zsh shell with direct plugin management.
# Configure zsh shell.
#
# install zsh
@@ -24,26 +24,6 @@ if ! command -v zsh &> /dev/null; then
esac
fi
zsh --version | log_quote
# plugin directory (XDG compliant)
PLUGIN_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/plugins"
mkdir -p "$PLUGIN_DIR"
# install zsh-autosuggestions
if [ ! -d "$PLUGIN_DIR/zsh-autosuggestions" ]; then
git clone -q \
https://github.com/zsh-users/zsh-autosuggestions.git \
"$PLUGIN_DIR/zsh-autosuggestions"
fi
# install zsh-syntax-highlighting
if [ ! -d "$PLUGIN_DIR/zsh-syntax-highlighting" ]; then
git clone -q \
https://github.com/zsh-users/zsh-syntax-highlighting.git \
"$PLUGIN_DIR/zsh-syntax-highlighting"
fi
# change default shell to zsh
if [[ "$SHELL" != *zsh ]]; then
sudo chsh -s "$(command -v zsh)" "$(whoami)"
@@ -51,4 +31,5 @@ if [[ "$SHELL" != *zsh ]]; then
fi
log_pass "zsh configured"
zsh --version | log_quote