I use M-x shell for most shell commands. This provides “infinite” scrollback, easy to grab output into the kill ring, etc. It’s kind of like a temporary notebook (though easy enough to save). When I need a full terminal such as gdb -tui, I use a more traditional terminal emulator like gnome terminal.
Fun thing is I’m currently using Emacs mostly for vterm, lol. I code in another app (works better on my current project), I’ve switched from org-mode to LogSeq (long story).
Well, ok, also magit.
So I can do terminal stuffs in Emacs, instead of having to open another terminal window
They are just another terminal emulator, not much else. So the point? Not much if you use emacs as just a text editor.
If you are more intergrated into the emacs environment there are features that you may find useful such as directory tracking. Worth checking out their project pages to see if they make sense in your work flow.
Vterm or eat would be a must for EXWM users.
Very good point, if all you have is emacs then a decent terminal emulator is a must.
I get your point. I messed with eshell for a while, then used vterm. In the end I just hard wired a swaywm key to a scratch terminal wihch toggles an alacritty instance. I can copy and paste in it fine : in short I find it easier to do “terminal shell things” in a “real terminal” but I can see why others prefer to stay inside emacs. Occasioanlly I’ll use a terminal inside emacs via projectile as its quick to open a terminal at your current project location.
If you are a web developer, you will notice that modern toolchains tend to assume interactive terminal. Most of them can be run in
compilation-mode
, but some do not function without interactivity. For example, you will probably need a terminal when scaffolding a project using a CLI.None if you don’t care for terminal emulation. You can use M-x shell and have a much better experience.
Terminals are helpful?
It’s not clear what you’re interested in here. Why use a terminal in emacs as opposed to a separate program? Why these over eshell?..
Can you call external programs like GCC with eshell?
I have this funny anecdote.
A remote system I was working on has a malfunction: taskbar dead; windows blocked; super-key did’t activate anything. I had just a Emacs window open.
I ran eshell and then “shutdown -r now” and the system restarted.
Great moment with surprised colleagues :-) it was 2020
Yes? It’s a shell
Why are people downvoting this question? OP seems legitimately confused.
Vterm: none that I can see
Eat: it’s awesome, very good and fast and mouse input works out of the box
That does not justify 5000 lines of code
If you have to compare with vterm, it doesn’t. Vterm has more features, faster and less buggy.
My weakest computer can fit twenty million lines of codes on it.
I’d say if anything, the usefulness of eat would justify a lot more. Thankfully doing one thing well lends itself to brevity, and storage is cheap
I believe the EAT readme itself recommends vterm for particular use cases, like (if I recall correctly) needing an emulator that handles large volume of text streaming
For me: To run commands such as brew.
You mean “as opposed to using term.el” ?
Performance, mostly. (I’m still using term myself, but suspect I’ll switch to eat at some point.)
Being able to do emacs stuff in my terminal and terminal stuff in my emacs while sharing the same kill ring and other similar kinds of state.
Use same keybinds as in other Emacs buffers to manipulate the text e.g. search, copy/paste, folding; matching theme; project context; etc.
I used both extensively but the both are faster than term or shell.
Vterm is the fastest and most correct about handling key events.
Maybe term will get similar improvement as vterm in the future. This is such a basic thing that most other IDEs also seem to support properly.