A minimal config for ZSH without relying on oh-my-zsh. Less bloated, with important functionality perserved.
The goal is to maintain most of the functionality combined with an extremely fast start up time, since waiting for new shells to load while working is an annoying experience.
This config aliases some default commands to use specific options. It also alias a few of them to use new external versions. Read more below.
Default commands replaced with new versions:
Waiting to see if there is a need for these:
This config expects the following directory $HOME/.zsh_plugins
to exist and to contain the following plugins:
Clone them in the $HOME/.zsh_plugins
directory via git. Plugins are loaded last.
Waiting to see if there is a need for these:
I've used these before in the past but haven't really found them as useful. There might be better alternatives out there, and the latest .zshrc
doesn't load them anymore.
- key-bindings - oh-my-zsh keybindings
- history - oh-my-zsh history config
- completion - oh-my-zsh tab completion
Install these with something like wget
in the same $HOME/.zsh_plugins
directory.
Additional plugins can be found in the awesome-zsh-plugins repo.
This shell config relies on fnm to manage node, install via brew install fnm
. I've found fnm
to be significantly faster and more performant than older equivalents like nvm
.
I've experimented with both. Starship is significantly faster. The prompt is essentially lag free, whereas Spaceship had slight, but noticeable, lag on my machine.
This config relies on the starship theme. Install it via brew by running brew install starship
. For other installation methods, consult the starship repo.
Create a file in $HOME/.starship/config.toml
for the config file, or set the location on line 156 in this .zshrc
file.
The di
docker command relies on jq.
A lot of the configuration was drawn from two major sources: