Learning Log — Terminal & Plugin Setup Journey

8/24/2025

Summary of Terminal & Plugin Setup Journey

1. Powerlevel10k Installation & Setup

  • Installed Powerlevel10k (brew install powerlevel10k) and added the source line to .zshrc.
  • Learned how it integrates as the theme for Zsh.
  • Ran the p10k configure wizard (choosing separators, heads, height, icons, instant prompt mode).
  • Confirmed prompt was customised and working.

2. fzf Installation & Configuration

  • Installed fzf with Homebrew, enabled fuzzy auto-completion and key bindings.
  • Added recommended config to ~/.zshrc:
    • FZF_DEFAULT_COMMAND with ripgrep for fast search.
    • FZF_DEFAULT_OPTS with layout, preview, border.
  • Faced error Command failed: rg --files ... → realised ripgrep (rg) must be installed.
  • Lesson: plugin configs often assume extra tools; always check dependencies.

3. zsh-autosuggestions

  • Installed via Homebrew (brew install zsh-autosuggestions).
  • Mistakenly added it to plugins=(...) at first, which failed.
  • Learned difference:
    • OMZ plugin method vs manual source method.
  • Settled on Homebrew + manual sourcing in .zshrc, plus custom keybindings and subtle grey highlight.
  • Verified it works by typing git sta → suggestions appeared.

4. zsh-z (Directory Jumper)

  • Installed zsh-z for fast directory jumping with frecency.
  • Tuned settings (ZSHZ_CASE=smart, ZSHZ_TILDE=1, ZSHZ_TRAILING_SLASH=1, ZSHZ_DATA=~/.local/share/zsh-z/z).
  • Added to plugins=(git zsh-z).
  • Initially empty DB (z -l), but understood it builds history after navigating with cd.
  • Key takeaway: z learns over time, and becomes more powerful the more I use it.

5. Key Challenges & Fixes

  • zsh-autosuggestions not found → solved with manual sourcing.
  • fzf preview failed → fixed by installing ripgrep.
  • z didn’t work at first → realised it needs history to build up.
  • Verified all plugins were properly installed and loaded.

6. Final Result

Now my terminal feels fast, modern, and efficient:

  • Powerlevel10k → polished, informative prompt.
  • fzf → fuzzy search across files and history.
  • zsh-autosuggestions → smart inline suggestions.
  • zsh-z → instant jumps between frequently used dirs.

My .zshrc is clean, with logical grouping:

  • Config exports at the top (fzf, autosuggestions, zsh-z).
  • plugins=(git zsh-z).
  • source $ZSH/oh-my-zsh.sh.
  • Manual source for autosuggestions.
  • Powerlevel10k at the bottom.

📚 Lessons Learned

  • Don’t just copy-paste configs; understand what each plugin depends on.
  • Small misplacements in .zshrc can break things.
  • Zsh customisation is iterative — errors are signals, not dead ends.
  • Each plugin feels minor alone, but combined they create a smooth workflow.

👉 Overall: I started with a plain terminal, and now I’ve built a personal productivity engine.