21 comments

[ 3.7 ms ] story [ 51.0 ms ] thread
It was always like that before about 10 years ago. You're getting your feet wet in programming, learning about free alternatives, and you learn that all the world's legendary hackers become proficient in one of either vi (vim) or Emacs. So you dig in and you find that, as your awareness of programming languages grows, Emacs is a "good-enough" solution for working in nearly all of them. (Vim is too, but maybe a bit less so in 1995 when I was starting out.) And if you want to program effectively cross-language, there's nothing you can do but lock the fuck in and learn your editor's idiosyncrasies, shortcuts, and programming/customization features.

These days we're all spoiled by Visual Studio Code, Zed, even things like Geany and Notepad++. So it makes less sense for neophytes to start with something as ancient and idiosyncratic as Emacs, and Emacs does not enjoy nearly the prominence or mindshare it had decades ago. (Though I understand its absolute user base has grown.)

For me what I found was that on early 90s telnet-accessible Unix systems the only pre-installed or easily installed editor that actually let me use... luxuries... like arrow keys and backspace was emacs. Vi was always there but modal editing repulses me and it also didn't work with arrow keys and the like. (I've never understood the fixation with avoiding them in favour of repurposing letter keys, something that is just a holdover from the very anemic terminal keyboard that vi was first developed on.)

Emacs was literally the sanest option unless you could bribe the sysadmin into installing "joe" or similar. ("pico" and "nano" came later).

The other thing is back in the day emacs was often a good option for running clients to connect to things like IRC or MUDs or MOOs, and even Gopher and the early web. It was also an excellent news and mail reader!

And so I used emacs as a general text editor and MOO and IRC client long before I ever used it for writing source code really (for which it was also obviously very good).

I moved to nvim from vim and it's seems me to easy and handy for everyday use. While emacs like rocket since :D
Emacs is most definitely not a rocket science. The problem with people trying Emacs is that they approach it just like any other text editor, instead of understanding the grand, core principle of it - Emacs is first and foremost a Lisp interpreter with a built-in text editor and not the other way around. Therefore it makes much better sense if you approach it from a Lisp perspective. Alas, many, perhaps most, beginners try it after hearing how "powerful this Emacs thingy is", and try to learn "editor features", instead of focusing on the Lisp side of things. Some even admit that they don't like Lisp and don't understand it and plan to never deal with it. Most posts of "abandonment" and "I switch to VSCode after decades of Emacs use", after closer examination, reveal that the person perhaps never even written any elisp code - at most, they'd just [almost] blindly copy&paste existing snippets into their configs.
Heh. In the early 1990s, I got initiated to the basic Emacs key bindings and editing UI via JOVE for a Scheme programming class. JOVE didn't have elisp behind it, instead being light enough that scores of students could all be running their own editor session and Scheme interpreter processes on the same memory-starved, multi-user server.

I'd already known Common Lisp from a prior class, which mostly used some Mac based REPL. Shortly after, I had real Emacs and various CL and Scheme runtimes on my Linux PC. Scheme was my obsession at the time. A lot of my pathway into CS was puzzling over what it would take to implement a Scheme runtime. But, I felt no desire to get into the bizarre-to-me elisp dialect. It just felt gross.

Probably because of early years using shared terminal server rooms and hosts, I also learned that over-customization just became a pain when I had to move between environments. I ran the Emacs that came bundled with my Linux distro, with the extensions that came packaged along with it. Mostly I just tried to have Xresources to get my preferred color scheme and text fonts.

From all of this, I'm nearly some kind of old school Unix fundamentalist. I've never wanted an IDE. Or rather, my IDE has always been the host OS, shell prompt, filesystem state, and other terminals. I use adjacent shells to run builds, tests, debuggers, version control, etc. Emacs is just my editor. I've never, ever wanted any editor to subsume my OS, window management, and these other tools.

My favorite interface feature is creating several "frames" (separate X windows) viewing into the same buffers. Sometimes several files side by side, and sometimes several editing viewports on the same file. I also use the X based menus to find many esoteric features or session settings for which I would never memorize the command names.

But, when I am forced to run Emacs in text terminal mode, I revert to thinking of it like JOVE. I'd rather open multiple terminals (and SSH connections, when remote) and have each one run its own ephemeral Emacs instance with one buffer for a brief foray into one file. Somehow, I've never had the urge to fire up an Emacs server to share state between these. I just find my way back to a proper graphical Emacs when I want that kind of complex editing session.

The only Emacs modes I use are for syntax highlighting and auto-indentation. I also never wanted Emacs "windowing", i.e. text terminal muxing. For me, learning to kill accidental window splits was roughly the same need as learning how to exit/abort out of accidentally launched vi. Repulsed, I head for the exit!

My favorite editing features are just search, find-replace, and find-replace-regexp. But search is mostly just a fast-scroll to me, jumping forward or back to text I know is there. If I'm really searching, I more likely mouse over to a terminal window and run find and/or grep from a shell. My favorite advanced editing feature is buffer-compare (Ediff), which I use for merging changes between two files in side-by-side frames.

Oh, and I despise the GNU infos-style help system too. I much prefer manpages, or secondarily reading docs in a web browser.

>Emacs is first and foremost a Lisp interpreter with a built-in text editor and not the other way around.

I've been using emacs as my primary editor since about 2002 and I hate this take. Emacs Lisp is by far the worst part of emacs. It is a horrible language, best kept dark and deep in the vaults, not to be used, unless at the uttermost end of need.

My config, after more than two decades, is about 400 lines, and I consider that excessive.

I've been trying emacs for a while. People keep saying it's self-discovering and I have no idea what they mean. Am I missing part of the manual? I google stuff when I don't understand, like any other piece of software. I've never managed to successfully use the help system to find anything.
A bit of advice to people that have the urge to try Emacs.

Do not use a distribution. Yes I know.. you have read that before and then you used Doom or Spacemacs anyways. That's me in the past. And it never worked out for me. I always ended up trying to configure things and the whole setup was too complex for me, so I failed.

Over the last 10 years I have been a heavy (n)vim user but I tried Emacs multiple times. Always a distro. It never worked out. Now over the last year I was trying Emacs with a vanilla setup and configured everything from scratch. With the AIs this is super simple because they can help you get out of config trouble.

The experience was way better than before. After my one year experience I have switched back to neovim but I still have become a fan of Emacs and I have adapted my nvim config. Stuff like dired, magit, compile-mode I have found equivalent nvim plugins and use them now.

Seconded. If you want to learn doing things the Emacs way, I recommend the Mastering Emacs book by Mickey Petersen who roams among these threads. It is excellent.

https://www.masteringemacs.org/

This provides an excellent base and exploration of the builtin packages, then you can customize your experience on top and make it your own.

Interesting. I started on spacemacs and never left. My spacemacs is super pimped for the things I want. It feels like if I rolled my own I would end up with something like spacemacs, but not as good.

So I guess you and others here have had the experience of building something that was your own that felt better than the distro?

I have been using an unstraigtened version of Doom Emacs, and had a lot of issues with the behavior on wake. It turned out the underlying rendering technology was faulty and changing to pgtk fixed it. Sometimes going back to basics forces discovery that is transferrable, like distro-hopping tor DAW switching.
GNU Emacs from gnu.org is usable without an init.el or any other customization.

Every line in init.el is something that you have to maintain and move with you.

And when you're using someone else's computer, their init.el won't be what you expect.

It all started in the early eighties. Just got into the university and the machine was a PDP-10 (tops20) and the only option as I remember was Emacs. Has been using it since. Not so much after the introduction of IDEs. But will totally lost for general file editing if there was no Emacs in Linux distrubtions. Hard to grasp? Maybe but for me it was the first thing I learnt and most likely will end with.
If you find yourself wanting to try out Emacs but are (understandably) turned off by some of its archaic defaults, I encourage you to check out my Emacs Bedrock [1] project. It is not a framework like Doom Emacs or Spacemacs. Instead, it's just a bunch of better defaults, plus some example configuration for some of the most popular packages. It's meant to just be a starting point, and not a framework to keep up-to-date in the long run.

Emacs has come a long way in terms of in-built features. The only problem is that, in the name of not breaking backwards-compatibility (or something like that), the archaic defaults have remained. Just a little bit of simple config (either from Bedrock or, heck, even an LLM) will get you very far.

I'm working on a new version of Bedrock for Emacs 31. If you're using the release candidate (which, because it's Emacs, is more stable than most other operating systems) then check out the `emacs31` branch.

[1]: https://codeberg.org/ashton314/emacs-bedrock

> The only problem is that, in the name of not breaking backwards-compatibility (or something like that), the archaic defaults have remained.

As a user since '97, I've often felt that this philosophy is entirely, well, backwards. I know how to read the release notes to learn of such changes and how to edit my personal init.el file to revert a setting if I don't like the new default. As long as no one takes away the option, the default doesn't really matter too much to me. But newcomers who might not yet be comfortable with editing their init.el files could really benefit from a more optimal out-of-box experience.

(And besides that, often the newer option is something that I've already moved on to, so making it the new default means I can now remove it from my init.el. I always enjoy when I discover that I can cut something from my init.el because it's now in base Emacs.)

Bedrock is the only Emacs "customization" project I've actually tried out since my GNU Emacs journey started in the Nineties. I am very simple in my setup and it was only in 2018 I started trying packages that I never used before to create some modes to manage tasks at work that dealt with commercial testing tools. It forced me to evaluate my init.el in ways I never imagined (which was, to be fair, getting unmanageable from decades of use). It was only this year I jumped onto System Crafters and saw the great work being done there by Guix hackers whose work I follow, and discovered Bedrock in the process. I'm still trying to navigate how it will best serve me but it has definitely changed my perspective from blindly updating a single file for all my many custom .el hacks and thinking more responsibly about how I code and how I manage my work environment. I highly recommend Bedrock to first-time or new-ish Emacs users who feel overwhelmed or who need a little organization in their environment. I particularly like the UI enhancements and have been using Avy for the first time. I'm already writing some code around Avy for a new mode and it seems to be the package I've been looking for. Even if you're a greybeard hacker like me Bedrock will be a great addition to your toolkit.
As someone who’s only used Emacs for around 5 years, Emacs is awesome even if you haven’t been using it since 1987. I used to get intimidated by the fact that every single Emacs user has been using it for decades. System Crafters was fantastic for getting a handle on things. It’s one of the coolest programs ever.

That said, I’m usually in vim. Emacs is a neverending rabbit hole of a hobby that begs to be tinkered with forever. I find it easier to just do useful stuff in vim and I’m always trying to add a new efficient keybinding or function to my Emacs config.

LOL. 1987 is just about when I stopped using emacs. Suddenly, I feel really old...
I love the way this starts with using emacs badly since 2008. I start my own shorter emacs story similarly: “I’ve been using emacs for 10 years, so I’m only a beginner“.