I quit fish because I missed being able to `sudo !!` to rerun the previous command with sudo. There's an alternative way to do it (something like up arrow, ctrl-i, "sudo", enter), but I can never remember it when I need it, which is not often enough to stay in my head, but often enough to be come quite annoying.

I also bounced off of fish for the same reason.

This post has prompted me to give fish another go, so I looked into it again.

It looks like the abbreviation system can now (since March this year) help you with !! (https://fishshell.com/docs/current/cmds/abbr.html even gives it as an example)

I also use `!$` (`vim script.py` and then `python !$` or `git commit !$`) but the parser rejects `!$` before it can be rewritten by the abbreviation system. [edit: https://superuser.com/a/1762626 points out that if you add a space before hitting enter then it works fine, so I'm guessing it's just a bug, and I should go with d below]

Options seem to include:

a) make a !$ replacement that is not illegal and change your muscle memory `\$` or `!\$` or `!@` or `!%`

b) use a keybinding for !$ as suggested in https://github.com/fish-shell/fish-shell/issues/288

c) some combination of a and b (e.g. make a `!\$` abbreviation and then make a binding so that if you type !$ it replaces it with `!\$` so that it gets past the parser without expliding)

d) patch the parser to allow !$ as a special case if there is an abbr for it.

I just tried b but it's pretty jarring. I think I might go with c instead.

I'm actually feeling quite positive about this now.

There is something I've been wanting to add to bash since forever, which is something to help me cd into a repo that I just cloned (e.g. `git clone https://github.com/fish-shell/fish-shell` then `cd !/` could expand to `cd fish-shell`).

Exciting times.