I've been using the zsh
terminal with the infamous oh-my-zsh framework for many years now. The features and improvements it makes on plain old bash are impressive. But as my needs change, so does my shell. I made the switch to the fish
shell almost a year ago and here is why I switched.
Speed
fish
is faster than zsh
. Especially when using zsh
plugins the loading time alone is significantly slower. But more than that, the overall experience for me feels snappier and more responsive in the fish
shell. Since I'm using the terminal to be more efficient and get things done faster than a GUI, speed is one of my top requirements for my shell.
Simplicity
The oh-my-zsh configuration and plugins tend to add complexity to the terminal environment, especially custom aliases. Overall, I have found fish
to be much simpler regarding configuration and usage. My config file is only a few lines long and I'm only using one or two plugins for third party utilities (ex: fasd
and nvm
). I also found a very simple theme that only shows me what I need, similar to my previous zsh
theme.
Autosuggestion
This is the main reason I moved to fish
. I originally was using the zsh-autosuggestions which is "Fish-like autosuggestions for zsh". This is what drew me to fish, this is by far my most used feature. If I mistype a command, it will show in red to indicate that it's an invalid command. But, more importantly, while I type the prompt auto-suggests my previous commands (by recent and most used). This is far quicker than ctrl+r
and usually shows me the command I want 80%+ of the time. Again, this is the main reason I use fish
and one of my favorite productivity tools on my computer, period.
Vim Mode
I've been a vim user for many years now. What I love about vim is it's intuitiveness and efficiency (once you've really gotten it down). I know zsh
offers a vim-mode but I was happy to learn fish
has one as well. It a sort of simplified vi
hybrid but it does all I need it to do.
Conclusion
fish
is fast, simple, offers powerful autosuggestion and a vim mode. These are the most important thing for me right now in the terminal so I proudly made the switch to this friendly interactive shell and haven't looked back.
What shell are you using? Do you love fish
as much as me or found something better? Let me know in the comments!
Top comments (2)
I also switched to fish for the speed reason. There are also just too many things to do in zsh to have the same level of comfort. But i think itβs worth showing some downsides of fish as well, especially the compatibility with bash scripts.
the vi keybindings made me switch. And the fact that it has completions without needed to do hacks (ahem, bash and zsh)
Also to set vi keybindings add this to your
config.fish
fish_vi_key_bindings