Want to customize your prompt? Write a function called "fish_prompt" that calls git, echo, or whatever else you want and make them write to stdout. There, done.
Want to add a second prompt column to the right side of your shell? My "fish_right_prompt" function looks like
set_color 666666
date +'%Y-%m-%d %H:%M:%S'
set_color normal
and it puts the date at the end of each command prompt.Have spaces in filenames? Watch this:
$ touch a "b c" d
$ for i in *; echo "<$i>"; end
<a>
<b c>
<d>
Of course it handles that for you automatically.The downsides are that it's not POSIX-compatible, that command lines you find online may or may not work in it, and it's not going to be installed on every machine you touch. However, 1) you can still use bash or zsh if you occasionally need to, and 2) why make your life harder if you're using a machine you can install software on 99% of the time? I mean, I still write Python, even though it's not installed everywhere by default.