5 ms·
With the Emacs shell, this goes a step further. Emacs functions and /bin/ commands are put in the same namespace. '+' is now a command that can be run at the co
by shadowofneptune 4y ago
With the Emacs shell, this goes a step further. Emacs functions and /bin/ commands are put in the same namespace. '+' is now a command that can be run at the command line, while 'grep' can have its output redirected to a buffer instead of a file (Sadly no input redirection). This, all while itself being a buffer.
It doesn't work well with full-screen programs, or ones that use escape sequences. Sadly there's no away around that besides keeping a list of those programs. Unix programs have never needed to say to the OS "I am a fullscreen program" due to how little a traditional shell actually interacts with a programs.
Emacs is my login shell now. I feel however that other, more pure attempts at this like the Canon Cat and Plan 9's text editor were smothered by the Mac/Windows interface of GUI programs which rarely interact. A more evolved shell never had the chance to arise.
- jrockway 4y ago> It doesn't work well with full-screen programs eshell, at least in the past, is quick to involve ansi-term (M-x ansi-term) when launching a program that requires it. I recall being able to run Emacs inside of Emacs circa 2008, not sure if things have changed since then.
- _emacsomancer_ 4y agoThere's also eshell-vterm[1], which allows eshell to use vterm for visual commands. [1]: https://github.com/iostapyshyn/eshell-vterm https://github.com/iostapyshyn/eshell-vterm
- celrod 4y agoI haven't tried eat (Emulate A Terminal) yet, but I've been meaning to: https://codeberg.org/akib/emacs-eat https://codeberg.org/akib/emacs-eat Eat is an terminal emulator supporting eshell, written in elisp. It also supports full screen programs. It claims vterm is 1.5x faster, though, but that eat doesn't flicker while vterm does. I haven't noticed vterm flickering, or maybe I just don't notice?
- _emacsomancer_ 4y agoI've tried out eat a bit, it does also have something similar to eshell-vterm (for visual commands), but, obviously, in eat. My limited experience is that: (a) vterm doesn't feel like it flickers to me; (b) vterm still also feels faster than eat.
- celrod 4y agoThanks, I'll give eshell-vterm a try.
- shadowofneptune 4y agoThat's what I meant by keeping a list, didn't expand on that much. It's something that needs to be configured per-program, which is an issue.
- akira2501 4y agoI've mostly ditched tmux for emacs shells. I wrote a quick script that gives me tmux like shortcuts for tagging and switching to different buffers. This allows me to start several shells and move between them with simple "Alt-Fn" shortcuts. The split screen modes and copy paste are so powerful I find myself opening emacs just to use the shells even when I don't have any need for a file editing buffer.
- soamv 4y agowow, I've used emacs for a gazillion years and never thought to replace screen/tmux with it. I think I'll start now, thanks to your comment!
- ramin_hal9001 4y agoI still use Screen/TMux to run servers, or any process that I need to keep running for a long time and still maintain control over it's STDIN/STDOUT. But now that I use Emacs "shell-mode" I hardly ever use Screen/TMux anymore. I don't even use Bash anymore, I switch my default shell to Dash, because I don't need Bash's tab-complation in Shell-mode. I use Emacs's tab completion instead.
- jacobsenscott 4y agoI run tmux in vterm in emacs rather than multiple vterm buffers because as awesome as emacs is it still crashes or just becomes unusable with enough uptime. This way I can bounce emacs without losing my terminals.
- lelanthran 4y agoThat's quite funny. I've ditched the terminal for vim with split screen, for pretty much the same reason that you are using emacs - quicker to shift between shells and copy/paste become so much more (also, searching command history is not intuitive). Here's my shell script for vimterm.sh: vim -c 'call Tmux()' And here's the relevant function from my .vimrc: function! Tmux() vsplit terminal set nonumber wincmd j q wincmd l terminal set nonumber wincmd j q endfun