loading...

Why I Switched from ZSH to FISH

joshmedeski profile image Josh Medeski ・2 min read

fish

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!

Discussion

pic
Editor guide
Collapse
sonnk profile image
Nguyen Kim Son

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.

Collapse
jethrolising profile image
Jethro Lorenzo Garcia Lising

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