

11·
11 days agoThis almost certainly doesn’t help you, but I do this kind of interactive-computing-in-a-consistent-interface with Emacs.
Emacs has modes (think, extensions) to do all those things and more.
It can also be a global application (/arbitrary function) launcher as demonstrated in this post.
The only problem is you have to give Emacs your heart, or it won’t work.
Well, I started using Emacs because I was feeling limited by my Vim+Tmux-based workflow. Like you’ve heard from others, what convinced me was the consistency in interface, and the composability that enables.
Everything is a text buffer. When the text is drawn to screen, it might be resized, colored, hidden, replaced with images, etc, but it’s all still just text. Because of that consistency of medium, all your interactions boil down to manipulations of that text.
What’s important isn’t the verbatim text, but what the text represents. It could be code (symbol, function, library, in any language, literately), prose (word, sentence, paragraph, or whole book), a file or directory, a button, a list, a foldable outline, a process, a container, a game tile, a typo, a secret, a git object, a pull request, the string you’re looking for, a definition, a chat message, an RSS feed/item, a web page, etc…
Each of those has a mode (or modes) that makes interacting with those objects in a semantically meaningful way both efficient and composable (to varying degrees).
That’s why Emacs devotees try to do everything in Emacs. Leaving Emacs means leaving that consistency and semantic expressiveness behind. In a CLI shell, yes everything is text, but it’s comparatively raw. The best you can do is define variables and color it. TUIs bridge the semantic-meaning gap, but aren’t composable with each other. (Same with GUIs, but because of administering remote systems I avoided them when possible.) You can’t add functionality to htop without recompiling the whole thing. You can’t pipe ncdu’s results to rsync. Emacs is a live Lisp machine. You can redefine (or advise) any function on a whim, without restarting.
That’s not even getting into how everything you do to improve interacting with text improves your experience with all those text-encoded objects. Completions can be filtered and ranked by different algorithms, lines can be “narrowed” to, it has an interactive regex builder, you can autofill with simple, intelligent predictions (like, what’s under your cursor, or a prefix-matching word up-buffer), you can deeply integrate LLMs, reflow and pretty print, follow externally-edited files, transparently access remote resources…
I don’t know. Obviously it’s not for everyone, but using Emacs makes me feel liberated; in control of my software. I love it.
Thanks for giving me a soapbox and the opportunity to put my thoughts together.