I tried Fish for a while, and found the three things I liked most about it were all available as addons for zsh, so I went back to zsh with just these three lines appended to .zshrc:

  source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
  source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
  source /usr/share/zsh-abbr/zsh-abbr.zsh
(In case it's not clear, install them with your system package manager.)

i love it when innovations in a new application are carried over to older tools. zsh seems especially suitable for that. it soaks up good ideas like a sponge and finds a way to integrate them. on the other hand it does make zsh feel kind of overwhelming at times in terms of options available.

my favorite part besides autosuggestions is the way history works, not incremental but i can type out a search term, and then start searching up and down the history.

incremental search is always irritating me by showing me irrelevant stuff while i am still typing, which i find distracting because i have to process it while at the same time focusing on typing the search term right.

now if only i could also have multiple search terms...

(i also prefer the fish syntax, but that is more of a matter of taste and getting used to)

> (i also prefer the fish syntax, but that is more of a matter of taste and getting used to)

IMO one of the biggest advantages of zsh is it's almost 100% compatible with Bash. If I'm in my shell and want to run an adhoc command with a for loop I want to do it with Bash's syntax, not learn a new Fish syntax. Having to manually drop into `bash` to run a bunch of commands is too inconvenient. Also you'll find most examples online using POSIX shell or Bash compatible syntax. You can carry over those to your dedicated scripts and adhoc commands. Your knowledge becomes shared.

Use bass to drop down to bash from fish :)

https://github.com/edc/bass