Note: I've replaced Fish Shell with Bash in my personal technology stack, as of March 2018. Ha ha, back on Fish Shell.
Fish Shell is a very useful shell. I use it on OSX and Linux. Provides for some sanity at the command line. For an editor I use Nano. Note that there are some limitations, and a learning curve on getting it set up. However, it does have some limitations, and is definitely newer than other shells. When trying to run a command that won't work in fish, then simply invoke bash and get it done. No real limitations to speak of. For doing shell scripting, it is very straightforward and definitely more modern. Useful docs on the fish shell available.
What Fish Can't Do (So Well)
Fish is a bit more limited as a general purpose command/utility invoker, as it seems to throw errors. Overall, it is a bit cranky, and really only best when doing scripting. To that end, better facility with Python will probably fill in the gaps around Bash that Fish does well, while focusing on tool that would be even more extensible.