I had heard good things about fish and after using oh-my-zsh for a long time, I wanted to give it a try with Starship.
Installing fish and Starship is straightforward on macOS:
brew install fish starship
Next, we add fish as an allowed non-standard shell on macOS, and set it as the default:
echo /usr/local/bin/fish | sudo tee -a /etc/shells
chsh -s /usr/local/bin/fish
I was using Alacritty and for Alacritty to pick up the new shell, I had to restart my laptop (or at least log out and back in).
My migration from oh-my-zsh with powerlevel10k was easy. Most features were supported out of the box or easy to configure:
starship init fish | source to initialize Starship, with many of the command line features that oh-my-zsh and powerlevel10k providezoxide init fish to initialize zoxide (z command replacement for cd)fzf --fish to initialize fzf for reverse history search; alternatively there is fzf.fish, a fish plugin using the fisher plugin managerYou can find my full configuration in my dotfiles repository.
Compared with Zsh, fish provides:
I also wanted to migrate my Zsh command history, here are some options, but haven’t tried them yet:
pip install zsh-history-to-fish and then run: zsh-history-to-fish