I love fish, and have been using it as my shell for over 10 years, it's pretty much the first thing I install on a new system.

I usually heavily tweak the settings of the applications I use, make my own custom themes etc, but the defaults of fish are so good that I hardly changed anything.

I only installed 3 plugins (z,fzf,and virtualfish) and that's it, it's super productive.

Completion from history, persistently setting enviroment variables, defining functions, the syntax, everything is much more ergonomic and sane than in bash.

I'm sure you can tweak zsh or even bash to achieve something similar, but why bother?

Also, i don't mind the incompatibility with bash: the fish language is much more sane, and you can easily use bash if needed.

This is the exact reason I use Fish. The only thing I _need_ to get installed on random servers is Fish itself.

No need to install and configure oh-my-$shell or other huge monstrosities. Most of my stuff comes from a simple homeshick[1] sync with a few files in it.

[1] https://github.com/andsens/homeshick