I get coworkers asking me on occasion how my setup works or what this or that thing is. I’ll start by laying out why I have this setup.
I do most things from the command line, therefore my shell environment has a lot of customization of functions, aliases, prompt, etc.
I have used zsh for quite a while and am pretty settled into it. I’ve used grml zsh setup in the past, but now use a mix of zimfw, oh-my-zsh, and custom stuff.
I work with GitHub a lot, so I use gh. Obviously I also use git a lot, too, so I use the git CLI tool, not any of the GUIs.
I use starship for my prompt. You can use it with any shell, so if you switch shells you can at least keep your prompt exactly the same. This also enables one to share their prompt setup with people who don’t run the same shell.
I use zoxide for a "smarter" cd command, lsd as a better ls
command, direnv to control some environment variables per path, fzf, and other various little tools and libraries.
I use Neovim for my editor with various plugins.
I run everything in kitty terminal.
I have a ~/.zshenv file (this is sourced first by zsh) that sets some pathing and environment variables.
It also will source a ~/.zshrnv.local
for localized settings that I don’t want in git :).
I use the zimfw framework to manage my plugins, even oh-my-zsh plugins.
The top of my ~/.zshrc initializes zimfw, installs it if it is not there already, and processes the ~/.zimrc file that I have templated.
The rest of the ~/.zshrc
is setting options, aliases, functions, the usual.