Eschewing Zshell for Emacs Shell (2014)

Dev dumps zsh for Emacs’ built-in shell, comments erupt

TLDR: An Emacs fan swapped zsh for Emacs’ eshell to keep all command work inside the editor. Commenters split: some love the idea, others say terminal apps and keybindings break their flow, with many pushing vterm or sticking to zsh—highlighting the eternal editor-vs-terminal tug‑of‑war.

An Emacs power-user just threw down a spicy gauntlet: ditching popular shells like zsh and bash for Emacs’ own eshell, the command line that lives inside your editor. The pitch? No more juggling windows—run commands, scroll results, and even call Emacs functions, all in one place. He even drops handy shortcuts and Emacs Lisp tricks, plus a nod to a free eshell chapter in Mickey Petersen’s book.

The crowd reaction? Absolute chaos. One camp says eshell is cool in theory but crumbles when “real” terminal apps get involved. As kkfx puts it, “the terminal” is the problem—too many commands feel clunky compared to a true terminal, prompting a retreat back to zsh (with a fling at xonsh). Muscle memory meltdowns hit hard too: m463 laments that in Emacs, their beloved Ctrl‑R search pulls the editor’s text instead of past commands. Meanwhile, fhd2 waves the peace flag: just use vterm (a terminal emulator inside Emacs) and keep your familiar keybindings.

There’s nostalgia and déjà vu with wging linking to a previous round of this same fight: HN’s been here. Jokes flew about Emacs “eating the OS,” Ctrl‑R therapy, and less vs. more becoming “Emacs is more.” Verdict: eshell inspires, but muscle memory and terminal quirks spark the drama.

Key Points

  • The author replaces zsh, fish, and bash with Emacs’ Eshell due to an editor-centric workflow.
  • Eshell’s integrated paging enables navigating command output within Emacs, reducing reliance on external pagers like less.
  • Eshell offers cross-platform consistency and extensibility because it is implemented in Emacs Lisp, allowing use of Emacs functions and Lisp for scripting.
  • Eshell struggles with programs that attempt to control the terminal, noted as its primary disadvantage.
  • The author provides elisp functions to open Eshell in the current buffer’s directory (eshell-here) and to exit/close it (eshell/x), and demonstrates Eshell’s Lisp REPL-like behavior.

Hottest takes

"I still can't live on eshell, the issue is "the terminal", too many commands are simply uncomfortable" — kkfx
"my fingers use control-p and control-r on the terminal shell and I fail" — m463
"vterm in Emacs, with a few workarounds, works beautifully for me" — fhd2
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.