Personal Fish shell configuration for Arch Linux. Managed with Fisher and the Tide prompt.
.
├── config.fish # Top-level config (greeting, PATH, editor, locale)
├── fish_plugins # Fisher plugin manifest
├── conf.d/ # Auto-sourced config modules
├── functions/ # Custom functions and wrappers
├── completions/ # Tab completion scripts
└── .gitignore # Excludes fish_variables, fish_history, private config
| Plugin | Purpose |
|---|---|
| ilancosman/tide | Prompt |
| jhillyerd/plugin-git | Git abbreviations |
| jethrokuan/fzf | fzf key bindings |
| franciscolourenco/done | Notify on long commands |
| laughedelic/pisces | Auto-close brackets/quotes |
| decors/fish-ghq | ghq repo navigation (Ctrl+G) |
| jorgebucaran/nvm.fish | Node version management |
| edc/bass | Run bash scripts in fish |
The config wraps or defaults to modern alternatives where available:
| Wrapper | Replaces | Tool |
|---|---|---|
cat |
cat | bat |
ls / ll / la / lt |
ls | eza |
grep |
grep | ripgrep |
find |
find | fd |
curl |
curl | curlie |
dig |
dig | dog |
watch |
watch | viddy |
du |
du | duf |
top / htop |
htop | glances |
gdv |
vim diff | delta |
lg |
— | lazygit |
ld |
— | lazydocker |
yy |
— | yazi (cd on exit) |
Other integrations: fzf, zoxide, mise, navi (Alt+N), delta as git pager, bat as MANPAGER.
Machine-specific secrets and personal values (SSH key names, API tokens) live in
conf.d/private.fish, which is excluded from git via .gitignore. Create it locally:
# conf.d/private.fish — not tracked in git
set -gx MY_API_TOKEN "..."
if status is-interactive
keychain --eval --quiet your-key-name | source
end