my zsh custom configs
Find a file
2026-06-14 17:55:13 +02:00
src Looks fine 2026-06-13 20:44:50 +02:00
themes-fsh Looks fine 2026-06-13 20:44:50 +02:00
themes-starship Looks fine 2026-06-13 20:44:50 +02:00
.gitignore Looks fine 2026-06-13 20:44:50 +02:00
.zshenv Looks fine 2026-06-13 20:44:50 +02:00
.zshrc ssh ghostty fix 2026-06-14 17:55:13 +02:00
LICENSE Initial commit 2026-06-09 18:29:20 +02:00
README.md Update README.md 2026-06-13 20:47:08 +02:00
starship.toml starship: cmd_duration edit 2026-06-14 00:21:32 +02:00

zsh

Powerful but tastefully minimal zsh configuration.

Dependencies

Arch

paru -S git zsh neovim eza bat fd fzf zoxide starship ripgrep

Ubuntu

sudo apt install zsh neovim eza bat fd-find fzf ripgrep
# install zoxide and starship separately
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
curl -sS https://starship.rs/install.sh | sh
# Ubuntu installs bat and fd under different names — symlink them so everything works
ln -s $(which batcat) ~/.local/bin/bat
ln -s $(which fdfind) ~/.local/bin/fd

macOS

brew install zsh neovim eza bat fd fzf zoxide starship ripgrep

Setup

1. Clone the repo

git clone https://git.opbao.be/master/zsh.git ~/.config/zsh

2. Point zsh at the config directory

Add the following to /etc/zsh/zshenv:

if [[ -z "$XDG_CONFIG_HOME" ]]
then
    export XDG_CONFIG_HOME="$HOME/.config"
fi

if [[ -d "$XDG_CONFIG_HOME/zsh" ]]
then
    export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
fi

3. Set zsh as your default shell

chsh -s $(which zsh)

4. Create required directories

mkdir -p ~/.local/state/zsh     # history
mkdir -p ~/.cache/zsh           # completion cache
mkdir -p ~/.config/zsh/plugins  # plugins dir

5. Start a new shell

Plugins are installed automatically on first launch via the built-in plugin manager.

Plugins

Managed without a third-party plugin manager. Plugins are cloned into $ZDOTDIR/plugins/ on first launch.

Plugin Purpose
fast-syntax-highlighting Syntax highlighting
zsh-autosuggestions Fish-style inline suggestions
zsh-history-substring-search Up/down arrow history filtering
zsh-vi-mode Vi keybindings

To update all plugins:

zplugin-update

Keybindings

Key Action
Ctrl+R Fuzzy history search (fzf)
Ctrl+T Fuzzy file search including hidden files (fzf + fd)
Ctrl+F Fuzzy file search excluding hidden files (fzf + fd)
Ctrl+→ Move forward one word
Ctrl+← Move backward one word
/ History search by prefix
Ctrl+\ Toggle autosuggestions

Starship Config

Included in the repo at starship.toml and loaded automatically via STARSHIP_CONFIG in .zshenv. Requires a Nerd Font in your terminal. Some starship themes examples in themes-starship