Aliases - in .bashrc - unfortunately will need to be replaced by Fish functions; defined in the "~/.config/fish/config.fish" file by default.
The only real thing that keeps tripping me up with Fish is that it doesn't support shortcuts like "!$ ". I keep on typing that in, but due to the nature of Fish, it can't (or won't) recognise it. But the excellent history functionality does make up for this a fair bit.
Having said that, Fish is by far the best shell I've tried. I gave zsh a go for about half a year and got fed up with the autocompletion and general slowness. As a shell, Fish just behaves quickly and fairly naturally, with few exceptions (!$ ...).
I highly recommend it as an improvement over bash.
I was interested in this comment so I looked into the documentation to find out why this is. Here's a link to the FAQ for anyone else interested:
http://ridiculousfish.com/shell/user_doc/html/faq.html#faq-h... (last question)
I made a slight variation (and also posted it there):
function .runsudo --description 'Run current command line as root'
set cursor_pos (echo (commandline -C) + 5 | bc)
commandline -C 0
commandline -i 'sudo '
commandline -C "$cursor_pos"
end
bind \es ".runsudo"
Instead of outright `execute`ing the command, the above would save the cursor position. You can (theoretically) bind `\cs` so control-s adds the sudo (instead of option-s), but I couldn't get it to work.It's a step backwards. Which I'm fine with, as long as you step forward again, in some way.
I switched to fish about six months ago and have been very happy with it. I spend a lot of my working day in the command line, though not doing anything exotic, and find it very pleasant to use.
For example the exit code of the previous command, instead of POSIX $?, you can get it as $status.