Skip to main content
The Zsh configuration provides a fast, minimal shell with live autocomplete, syntax highlighting, and lazy-loaded language runtimes.

Plugins

Two plugins are auto-cloned on first shell start:
PluginPurpose
zsh-autocompleteLive dropdown completion as you type
zsh-syntax-highlightingReal-time command coloring
Update plugins with the zsh_plugins_update function. If zsh-autocomplete is missing, the config falls back to native compinit.

History

SettingValue
History file~/.zsh_history
Size20,000 entries
DedupIgnore all duplicates
SharingShared across sessions, appended incrementally
FormatExtended (with timestamps)

Completion

  • Sources completions from Homebrew’s site-functions directory.
  • Async autocomplete with 50ms delay and 1 character minimum input.
  • Menu select mode with case-insensitive matching.
  • Cache stored at ~/.zsh/cache.

Keybindings

KeyAction
TabAccept inline completion
Up / DownNavigate menu or search history

Syntax Highlighting Colors

TokenStyle
Commands, aliases, builtins, functionsGreen bold
Unknown tokensRed bold
Paths, quotes, options, globbingUnstyled (none)

Prompt

~/.config/nvim %              # left: directory + green prompt char
                          1   # right: last exit code in red (if non-zero)
  • Cursor: solid block
  • Prompt character: % for regular user, # for root

Aliases

AliasExpands to
bbun
bbbun run
aiclaude
supasupabase
nnvim
ntnvim +term

Lazy-Loaded Runtimes

Language runtimes are lazy-loaded on first use to keep shell startup fast.

NVM (Node.js)

nvm, node, npm, and npx are all shell functions that trigger a one-time load of NVM from Homebrew’s install path. After the first call, the real binaries take over.

GoEnv (Go)

goenv, go, and gofmt work the same way — the first invocation loads GoEnv from ~/.goenv and adds shims to PATH.

PostgreSQL

The libpq client binaries are added to PATH directly (not lazy-loaded):
export PATH="/opt/homebrew/opt/libpq/bin:$PATH"

Shell Options

setopt hist_ignore_all_dups share_history inc_append_history extended_history
setopt autocd nocaseglob interactivecomments no_beep prompt_subst

Local Overrides

Machine-specific settings can go in ~/.zshrc.local — it’s sourced at the end of .zshrc if it exists. This file is not tracked in git.