I have a utility called ZSH Autosuggestions, and it's probably one of the most useful things on my computer. It shows you a sort of preview of the most recent command you typed that matches the prefix of the current command you are typing. It's basically an automatic tool that bookmarks commands based on usage. I think the best bookmark systems are ones which simply track your entire history and suggest relevant pages based on it. That way the process of bookmark creation is automatic and you don't have to predict what you will need to access frequently.
This is essentially a fish built-in. I used to use zsh before, but since changing to fish I've never looked back.
Auto completion, abbreviations, better syntax, and especially the auto complete is like magic. It also seems to "know" in which working directories some commands work and won't suggest them if they arent.
I have to concur, fish is simply an amazing shell for interactive sessions. I've been using it for so long, I just take some things for granted, like the incredible autocomplete. As far as I understand, it looks at paths in history entries and won't suggest them if those aren't valid in the current directory. Then you also have the "shadow suggestion" described by GP, the Alt+arrows to just complete part of a history entry, the really good Ctrl+s (which also works for commands that implement fish suggestions, not just history), and so on.
I saw this in fish first. I really did want to love fish. I do love their tagline. However they are weirdly against comfigurable options and there were some minor things that irritated me that could not be configured away. So I looked at what zsh can do. I have a minimal setup now where I know what almost everything does and am very very happy with. Autosuggestions is fantastic.
I really wanted to like fish but it is so difficult to get it configured the way I would want to use it. I tried so many different ways and the barriers were just so high. It should not be so difficult to make a tool work the way I wanted to work.
> It also seems to "know" in which working directories some commands work
The 'It' above is actually the user as auto-complete is context dependent, so fish prioritises search results based on commands that were previously used within the current directory.
https://github.com/zsh-users/zsh-autosuggestions?tab=readme-...