M-n, M-p. M-r for searching on past commands. C-c c-n/C-p for next/previous prompt. C-c C-r to scroll to focus on output.
Having switched recently to Emacs, my current issue is how to get Emacs shell history saved properly for my other shell buffers, and getting completions from shell (not Emacs) to work, planning to try MisTTY soon.
I've retrained muscle memory to use C-c C-l (which I rebind to `consult-history'). This gives me a fuzzy-searchable list of all my history. I find that I prefer this to a normal shell's C-r, because with my vertical completion setup I can see multiple matches for my search simultaneously.
a good reason for getting used to the M-n/p/r binding is that they work in the minibuffer too, even in `emacs -Q` (though without live feedback, but i think that's a fine compromise)
for the past half year i'm using emacs without any extra competition packages and it's surprisingly usable as-is.
i haven't even customized the completion styles and it's fine!
i got used to typing `M-x -forward<TAB>` if i want to find a command which contains the word "forward" and not just starts with it.
i do have karabiner elements remapping my keys under macOS and i use a tweaked version of @jeebak 's SpaceFn layout, where i've mapped Opt on holding the semicolon key, which still acts as semicolon, when tapped.
that way M-r is pretty convenient to type. M-p is less so though, because i switch to the regular opt key for that... i should really have to get used to my glove80 keyboard to avoid such quirks...
otherwise, as others have mentioned it, remap the keys!
also, you can talk to some LLM about it, if you feel it would be tedious to come up with better bindings.
feed in the key bindings from `C-h m` of eshell, enumerate which bindings you want to carry over from traditional shells and instruct it to recommend you binding swapping pairs.
i was able to get great results on such niche operations already from anthropic's opus 4.5 models but even grok or deepseek was pretty helpful already last summer.
steve yegge's efrit takes this to a whole new level, by letting the LLM interrogate your running Emacs process live for documentation or function source code:
qazxcvbnm|2 days ago
Having switched recently to Emacs, my current issue is how to get Emacs shell history saved properly for my other shell buffers, and getting completions from shell (not Emacs) to work, planning to try MisTTY soon.
MarsIronPI|1 day ago
onetom|1 day ago
for the past half year i'm using emacs without any extra competition packages and it's surprisingly usable as-is.
i haven't even customized the completion styles and it's fine!
i got used to typing `M-x -forward<TAB>` if i want to find a command which contains the word "forward" and not just starts with it.
i do have karabiner elements remapping my keys under macOS and i use a tweaked version of @jeebak 's SpaceFn layout, where i've mapped Opt on holding the semicolon key, which still acts as semicolon, when tapped.
that way M-r is pretty convenient to type. M-p is less so though, because i switch to the regular opt key for that... i should really have to get used to my glove80 keyboard to avoid such quirks...
onetom|1 day ago
otherwise, as others have mentioned it, remap the keys!
also, you can talk to some LLM about it, if you feel it would be tedious to come up with better bindings.
feed in the key bindings from `C-h m` of eshell, enumerate which bindings you want to carry over from traditional shells and instruct it to recommend you binding swapping pairs.
i was able to get great results on such niche operations already from anthropic's opus 4.5 models but even grok or deepseek was pretty helpful already last summer.
steve yegge's efrit takes this to a whole new level, by letting the LLM interrogate your running Emacs process live for documentation or function source code:
https://github.com/steveyegge/efrit
he demoed it here:
https://youtu.be/ZJUyVVFOXOc?t=246
ulbu|1 day ago