5 ms·
I've been using Emacs daily for well over a decade now, but I just can't get myself to use any of its shells, or features that replace standard shell workflows.
by imiric 1y ago
I've been using Emacs daily for well over a decade now, but I just can't get myself to use any of its shells, or features that replace standard shell workflows.
I think the main reason—besides muscle memory and the scripts, aliases, and commands I'm already used to—is because a POSIX-compliant shell exposes a generic interface for both programs and users. Programs can receive and output data over standard file descriptors. They have a CLI with common design conventions regarding flag and argument parsing. Some programs choose not to follow these conventions, and some have a very complex CLI, but for the most part users can expect a specific interface to exist. Man pages have a standard format, and way of accessing them for all programs. And so on. All compliant shells on Unix-like systems work in a similar way, which means that the workflows I'm already used to are easily transferrable to any other system.
Contrast this with the workflow table in TFA. It's a mishmash of different Emacs modes, each with their own quirks, UI, and ways of interacting with other modes. One could say that Elisp ties it all together, but it's a general purpose programming language which obviously doesn't enforce a cohesive user interface for packages to follow. Eshell even complicates this because it resembles a POSIX shell, but doesn't follow any Emacs interface guidelines, so it breaks conventions of both sides. Sure, I could force myself to learn the intricacies of each package over a long time, and create a cohesive Emacs configuration that works for me, but I would need to lug around that configuration and depend on Emacs for everything. Which I'm sure Emacs purists would claim is the way to go, but I don't like that. The beauty of Unix systems is the ability to easily replace any tool in your workflow without impacting everything else. For example, I've mostly replaced `ls` with `eza`, `grep` with `rg`, `find` with `fd`, `top` with `btop`, etc. These were essentially drop-in replacements with minimal impact to me. Consider what it would take to replace dired or Magit, as perfect as they might be.
The Unix "small programs that do one thing well" philosophy is often ignored, unfortunately. Emacs might be the single biggest offender of it, though I suppose it's to be expected since "GNU's Not Unix"... The benefit of it is precisely the flexibility it gives to users. As much as I love Emacs, I'm not married to it, so relying on one special program that does many things would be harmful for me in the long run if a better alternative appears in the future.
- vkazanov 1y agoI am well past the phase of trying to pull everything into emacs. All reasons to not use eshell you mention are valid, and I can add one more: vanilla eshell doesn't really work well with visual commands. But recently I installed eshell-eat, and my biggest paint point just went away. I never expected to use eshell as a full-blown terminal replacement. I use half A dozen aliases (find-file dired...) , some lightweight lisp scripting, git that, apt install there... That's about it. In that capacity it's a valid quick tool.
- adalacelove 1y agoSame here. I just use https://github.com/akermu/emacs-libvterm https://github.com/akermu/emacs-libvterm and https://github.com/suonlight/multi-vterm https://github.com/suonlight/multi-vterm
- johnisgood 1y agoeshell: Welcome to the Emacs shell ~ $ btop ERROR: Failed to get size of terminal! ~ [1] $ shell: $ btop Terminal size too small: Width = 79 Height = 22Needed for current config:Width = 80 Height = 24 If I increase the width and height, I get an extremely weird output. ansi-term: Same as shell. Any other Emacs shells I missed? In any case, I do not use any shells within Emacs. I use XTerm separately.
- kreyenborgi 1y agoFor interactive stuff you probably want eat https://github.com/kephale/emacs-eat https://github.com/kephale/emacs-eat or vterm (I don't use them, I prefer my shells to last even if I should restart emacs)
- spauldo 1y agoDon't say that too loud or the "you should never have to restart Emacs" folks might hear you!
- skydhash 1y ago