Plus you can always just enter the command instead of using the key stroke for it. Again, the default UX for that is a bit weak, but with a few packages it becomes pretty strong.
Rejoice! The excellent which-key package that does this comes bundled with Emacs 30! (Emacs 30 will probably be released soon.)
> enter command… default UX is a bit weak
Agreed: the packages Helm, Ivy, and Vertico make this interface much nicer. I use Vertico [1] personally. Though, from Emacs 29, there are some really nice options you can set. I used the following in my Bedrock starter kit [2] to get nicer tab-completion: as soon as you hit TAB twice you'll get bumped into the Completion buffer to select something with your cursor.
Here's the relevant config:
(setopt completion-auto-help 'always) ; Open completion always; `lazy' another option
(setopt completions-max-height 20) ; This is arbitrary
(setopt completions-detailed t)
(setopt completions-format 'one-column)
(setopt completions-group t)
(setopt completion-auto-select 'second-tab) ; Much more eager
;(setopt completion-auto-select t) ; See `C-h v completion-auto-select' for more possible values
There's more configuration options, of course, but this is helpful:[1]: https://github.com/minad/vertico [2]: https://codeberg.org/ashton314/emacs-bedrock
They really are not.
(use-package visual-regexp
:defer t
:bind (("C-c r" . vr/replace)
("C-c q" . vr/query-replace)
("C-r" . vr/isearch-backward)
("C-s" . vr/isearch-forward)))
(use-package visual-regexp-steroids
:defer t)