> What both Emacs and Vim have in common is an intimidating learning curve. You can't just dip your toe in.
You kinda can, these days.
One of the main issues is that Emacs is, out of the box, the most complete toolbox you'll ever see, while at the same time being very incomplete. You have an email client, spreadsheet, unit converter, ASCII drawing, debugger, file explorer and so on and so forth. Meanwhile, you open a Python file and you are lacking a bunch of stuff that the likes of VSCode have out of the box.
So the solution is to customize, and that takes an inordinate amount of time.
Thankfully, some other people have solved this for us:
Spacemacs has VI commands by default - and I don't mean just the simplest keybindings like some VI emulators do, it's using evil-mode and it's pretty good. It can also be used in 'holy' mode (Emacs keybindings).
Either of these will get you a much more modern Emacs experience out of the box. You may need to add packages (it wouldn't be feasible to add all packages that everyone could possibly want), but they make it easy. Even though Emacs now comes with a package manager, it doesn't have any opinion on how you configure things. Both Spacemacs and Doom Emacs are opinionated, and that's a good thing.
Sure, you still need to learn concepts and keybindings. Thankfully, there's no shortage of tutorials, and Emacs own built-in documentation is very good. It also has a built-in tutorial, which is how I learned.
Spacemacs is slow as molasses on macOS and yes I have the latest Emacs.
It became so bad I switched to a Doom derivative (CentaurEmacs) and while it did improve the speed, it merely reduced it from "almost impossible to work with" to "noticeably and annoyingly laggy fairly often".
I gave up on Emacs after trying to make it work for a loooong time. Carefully and slowly making my way through NeoVim in the last 6 or so months now, and it's much easier to work with and configure, not to mention 99.9% of everything is instant (the only time it lagged was opening a source file of 1.7M size and I suspect the slowness came from the LSP server and not NeoVim itself).
Emacs seems to be carried by nostalgia from folks that love to tinker with their tools more than they like to actually get any job done. A bit of a toxic statement, surely, but I'm pretty salty still and I haven't seen any objective evidence to make me look at Emacs and its fans more charitably. For anything and everything the answer always is "hack it for the 6328th time to make it even more your own!"
While I have big respect for neovim, it's performance on big files is actually worse than emacs. I've submitted a bug on that upstream - it gets stuck with disabled TS, LSP, highlighting where vim and emacs chew through without any issues. Emacs has its problems but is actually OK performance-wise, if you avoid the obvious (long lines) and less obvious (custom modelines, fancy pseudo-tabs, etc) pitfalls. Thing is, emacs is constantly improving - 28 is faster than 27, 29 will be again faster and solve the problem with long lines.
> Carefully and slowly making my way through NeoVim in the last 6 or so months now
Emacs has also a ton of stuff included, so that you could carefully and slowly make your way through emacs instead of jumping through distros and complaining. In the end, I am pretty sure that you will not be able to freely configure and alter and neovim distribution, such as LazyVim or AstroVim - they have a rather complex structure.
> and it's much easier to work with and configure
No, it is not - it has poor discoverability, you have to reload it on changing the config file. Configuring emacs is a breeze - you can eval blocks of code, check, eval again - until it sticks. Every function is can be called and inspected. Oh, and have you tried to debug your config code in lua? Tell me how it went.
> Emacs seems to be carried by nostalgia
Emacs is carried by the fact that it is the only editor alive almost completely written and documented in it's extension language.
> No thanks. I actually have a job to do.
Of course you do - why else would you jump between emacs and neovim :)
That you believe your editor obviously can't be expected to deal with long lines shows objectivity isn't a concern. And no, emacs29's performance is still lousy on many long lines corpora in the wild, e.g., long parenthetical expressions. Even the improvement on other corpora is now in jeopardy as today the author has admitted the full fix may not hold up under scrutiny and has proposed a significant degradation.
I'm a lifelong emacser, but even I can see why its extensbility is blessing and curse. Sure it's fun to "mod" a Honda Civic, but ultimately you get a vehicle with two more horsepower over stock, and 2^n - 1 additional points of failure where n is the number of mods. But at least it looks cool.
> That you believe your editor obviously can't be expected to deal with long lines shows objectivity isn't a concern.
It is a known problem, but I can live with it even in the current state. I have a test where I will take an 800 MB csv file an do around 30 mil replacement in an editor. Vim is the fastest with around 10 sec on my machine, emacs chews through in around 30 sec, neovim hangs and we do not want to talk about VSCode/IDEA etc. But in praxis it is not a limitation which hinders my work in any of the mentioned editors, and so are long lines in emacs.
> Sure it's fun to "mod" a Honda Civic, but ultimately you get a vehicle with two more horsepower over stock, and 2^n - 1 additional points of failure where n is the number of mods. But at least it looks cool.
So... don't mode it? Stuff it offers out of the box is pretty solid these days with minimal adjustments, add magit and org on top, with 29 we get eglot and project.el - happy to roll. The way I see it, if tinkering with emacs if fun, then do it and be happy, if not - don't do it and be also happy. No one is forcing you to mod your emacs and if - report this person to police.
But having this possibility to mod it when you need it - well, it is indeed a quite unique and invaluable trait.
> So... don't mode it? Stuff it offers out of the box is pretty solid these days with minimal adjustments
EXTREMELY misleading statement, unless by "minor" you mean "3 days on and off installing and uninstalling and configuring packages", so I had to call you out here.
If I just install Emacs 29 RC I get a useless toy that can't even detect it's in a project and allow me to fuzzy-search a file name inside it while respecting `.gitignore`. Not to mention do a live grep.
So until I can install Emacs and have project features and everything that modern DOOM / Spacemacs / LunarVim / VSCode offer then no, it's not "minor adjustments".
There is nothing misleading about it - this is how I’ve always ran my neovim configs and it did the job - without project management and hundreds of packages. Don’t trick future readers into thinking this kind of yak shaving is necessary and not a personal obsession.
Your snark doesn't make my Emacs run faster but if it makes you feel better, do continue. ¯\_(ツ)_/¯
I switched editors because my job was suffering because of impossibly slow Emacs, not because I don't value my free time -- of which Emacs wasted plenty. Chose the lesser evil. Not a hard concept to grasp, I hope.
Shame that you felt attacked and figured you have to be nasty but you helped with exactly zero of my concerns, in practical terms.
NeoVim + LunarVim worked for me out of the box. The tweaks I did were entirely cosmetic. That's valuable. So far I spent exactly 5 minutes on functionality in it -- namely TS and LSP installs.
Oh and if I have to debug my editor then the battle is lost anyway. Not sure why you put any value on that at all; if anything, it's a negative value.
> of which Emacs wasted plenty. Chose the lesser evil.
Correction, Emacs did not waste your time. Emacs did not ruin your life, made you unhappy, or failed you. You simply gave up. Please find some inner courage to accept that fact. Math does not become greater, or lesser, or any other kind of evil just because someone fails to understand polynomials, quadratic equations, or calculus.
You're talking about Emacsers as if they fall out of their mother's womb and blindly walk straight into emacs-lisp mode. Many (if not most) discover Emacs years after trying other tools. We choose Emacs for plenty of good, objective, factual reasons. Not because we're emotionally inclined to tinker constantly or because we have Stockholm syndrome or we're afraid of something.
You have made your choice, fine, congratulations. But please don't come to a civil discourse wearing your preacher's mantle just because you think that "you've figured it all out". Trust me, many of us Emacsers have seen both worlds. And you? Much to learn you still have... young padawan.
---
Just a post-scriptum note: I hope you're not carrying some emotional burden associated with Emacs and something one day will inspire you to try it again. I remember, I gave it up multiple times, but something always would make me come back and try again, until one day I decided to stay. And by the way, I'm a die-hard Vimmer. The revelation that Emacs vims better than Vim itself was huge for me. I wish I had discovered that sooner.
> Your snark doesn't make my Emacs run faster but if it makes you feel better, do continue.
Unspecific complains will not let it run faster, indeed.
> I switched editors because my job was suffering because of impossibly slow Emacs, not because I don't value my free time -- of which Emacs wasted plenty. Chose the lesser evil.
The lesser evil would be to start the included profiler and check what is actually slow - you've wasted more time on complaining here, then M-x profiler-start takes. :)
> Shame that you felt attacked and figured you have to be nasty but you helped with exactly zero of my concerns, in practical terms.
I am not paid to support you, and you've started on a niveau where I also do not want to help you. ¯\_(ツ)_/¯
> NeoVim + LunarVim worked for me out of the box. The tweaks I did were entirely cosmetic.
Oh, LunarVim has its share of bugs, being a complex and fast-developed disto. Since you are not interested in debugging, I am curious what will happen when it breaks - will we see another post with accusations of neovim (another distro you never cared to understand, really) to waste your precious time? :)
> Spacemacs is slow as molasses on macOS and yes I have the latest Emacs.
Spacemacs and Doom can be slow because they offer tons of modules. You can't blame the buffet owner if you glut yourself till unconscious. One has to carefully choose and pick the modules and packages they need and disable/remove stuff they don't. Typical Spacemacs/Doom config can contain a few hundred packages. Show me a single piece of software that enables you to load hundreds of plugins that seamlessly intoroperate with one another. Emacs can do that, but it's not a sentient super AI, you can't just throw a bunch of things at it and hope it figures that out. Sometimes you even have to set the loading order right.
> folks that love to tinker with their tools more than they like to actually get any job done.
Emacsers hear that shit all the time, and they'd be like "yeah, whatever". But I beg to differ. Nothing else allows me get my job done quickly and with such joy. And I've seen and used many different editors and IDEs. You simply have no idea. Here's a deal, name just a few real-world example use-cases related to text manipulation. Not some goofy vim-golf challenges, something practical. I'm confident, I can probably demonstrate how Emacs does things in a much better fashion than any other editors.
> I'm pretty salty still
You're salty, perhaps because you couldn't spare enough patience and willpower to learn some Emacs Lisp, to figure out how the built-in profiler works, how to troubleshoot things. You've failed to cultivate some curiosity for basic things like, "what exactly happens when I press a key", open a file, etc.
Emacs did not fail you. You just gave up. No, don't get me wrong. I have plenty of reasons to hate Emacs myself. It's definitely not perfect. I hate it, and I still love it. Simply, because there isn't another alternative that I would hate less and love more. Anything else just falls short.
> One has to carefully choose and pick the modules...
...And you lost me right there. I am looking for a good experience out of the box. Emacs is not it. I don't want to pick anything, even less so doing it carefully.
I only stuck with Emacs because my life has been hell for a long time and I couldn't muster the energy, time and motivation to look for an alternative. The moment I actually had some of these I immediately jumped ship. (And yeah 20 years is a long time, just be grateful your life doesn't have such a big hole in it.)
> You're salty, perhaps because you couldn't spare enough patience and willpower to learn some Emacs Lisp
I don't want to. I am salty because I had no clue what I was getting involved with.
> You've failed to cultivate some curiosity for basic things like, "what exactly happens when I press a key", open a file, etc.
That's not basic curiosity, that's a chore. If I wanted to do kernel development I would, but I don't. I am a user of these things. I will sooner die than go and be "curious" about them.
I want to get work done.
> You just gave up. No, don't get me wrong.
But I said as much myself, didn't I? Though I'll maintain and still claim that it did waste my time, insofar as not making itself COMPLETELY AND PAINFULLY OBVIOUS. I don't care which "function's definition is void", dude. I care about "can't initialize TreeSitter for Golang, we seem to be missing module X which actually should come pre-installed with your Emacs 29 so WTF man, go ask these doofuses maintaining the Mac Homebrew -- the hell are they doing?!", or some such.
You try not getting me wrong either. I am not a script kiddie. I am a guy who absolutely LOVES programming and is doing it for 30 years but is now sick and tired of constantly having to pamper his tools.
I think it's a fair requirement in 2023 to want to run a few commands, make a bash script that updates the editor + its internally used stuff (packages in Emacs, plugins in VIM) and have a basic guarantee their dev setup won't break after an update.
But alas, no.
And to make it completely fair to all sides -- LunarVim (it is basically an opinionated set of plugins on top of vanilla NeoVim, akin to DOOM for Emacs) suffers the same problems. I figured I'll only update once a month now because the maintainers, like the over-excited kids that they seem to be, figure will break everyone's setup every week because they found this awesome new VIM plugin and the previous one is not "elegant" or whatever, bro.
I really see no way out. Nobody gives a crap about good developer experience, you're expected to be on the treadmill of always pimping your tools until your death apparently.
Almost nobody sees technology as a beast to be tamed and made to do work we don't want to do ourselves; they see it as a dog to play with.
> That's not basic curiosity, that's a chore. If I wanted to do kernel development I would, but I don't. I am a user of these things. I will sooner die than go and be "curious" about them.
If you're a samurai, then sharpening your sword is the single most important non-combatant skill you should master and know how to do by yourself. Sure, you can always hire some peasant who has the skill but shouldn't flabbergast when other samurais laugh at your incompetence.
Knowing your tools and making the best use of them (as a professional) is not part of your job, it is your job. I can still claim to be a carpenter who doesn't use a miter saw because I tried it once and got myself injured. But I can't tell my fellow colleagues to avoid using it and shouldn't complain about how awful those things are. People would laugh at me.
Emacs owes you nothing. It doesn't promise you riches, magical powers or a kingdom in heaven. It's a complex tool, and like any other tool, it requires time, patience and determination to comprehend it. You decided you don't have any of that to spare, so at least have some courage to respect those who made a different choice.
> Nobody gives a crap about good developer experience
The world owes you nothing. Especially, tools like Emacs and Vim. Tools that are absolutely and completely free to get, free to use and free to distribute.
> Almost nobody sees technology as a beast to be tamed and made to do work
That is exactly why I use Emacs. Because I want to feel in control. I am a damn computer programmer, and when the computer doesn't do exactly as I want, yes, I get mad. Emacs gives me a sense of control. You feel differently? Well, then it's you; don't blame Emacs for that.
> If you're a samurai, then sharpening your sword is the single most important non-combatant skill you should master and know how to do by yourself
Framing it as something one-dimensional is not doing your argument any favors. I'll give you a better one: we're virtual samurai with an arsenal of 50 bows, 200 katanas, 150 vakizashis, 20 rifles, 50 armors, 30 horses etc. I choose to not take care of a part of my arsenal because otherwise I'd get no time or motivation to do samurai stuff at all if I did.
There's no need to exaggerate or paint stuff black and white to make your non-existent point feel important.
If you think I am a crappy programmer for not being interested in "What happens when you press a key" then feel free to do so. I'll sleep quite well knowing you believe something so wrong. And you'll never succeed in making me believe like you do. Don't be thin-skinned and accept it.
> Emacs owes you nothing
If you wanted to discuss constructively you would have concluded several comments ago that I had wrong expectations towards Emacs, and that one day I finally understood that, and thus moved away. Which, newsflash, is exactly what happened.
That you and others felt personally attacked and then felt the need to exaggerate and paint me with negative colors (no, I don't "complain") speaks ill of you, not me. I am a pragmatic who finally woke up to the fact that a tool he used for a long time does not match his optimal work and thinking process. Reading anything more into it is just your fantasy.
> don't blame Emacs for that
Only you and a few others in this thread do the "blame" thing. I have expressed my opinion, salted with some negative emotions due to frustration and misalignment of expectations. If you don't like that, well, you'll have to find a way to live through it.
> The world owes you nothing
You're projecting super hard, dude. You over-fixate on an image of a bad programmer that doesn't do X or Y and thus they're "bad", then you figure I am a personification of that image (and it's exactly where you're hilariously wrong), and the rest is as predictable as a ChatGPT prompt; I could have written 90% of your comment if I wanted to argue with myself from another account.
People like you who can't accept different paths to enlightenment exist make for very bad leaders. I hope you're not managing people.
> when the computer doesn't do exactly as I want, yes, I get mad
And I am the same, which makes us arguing all the more funny, absurd and meaningless. Only I choose to do my job for which I am paid, and you choose to do that + tinker with your tools (which I also do but to a lesser extent). Tell me, why does Emacs need tinkering at all? If you are good at it, why haven't you tamed it like 10 years ago, forever? One would think you're bad at Emacs Lisp!
Finally, I tinker with stuff quite a lot -- which seems as something you think I don't do and you take me for some fool who can't write a single algorithm if his life depended on it. And you're wrong. Stop being angry that I don't have the same priorities as you and maybe you'll see a human being and a programmer who gets a lot of stuff done but is sick of pampering his editor programs. Because yes, that's me.
And I just finished writing scripts for migrating Borg backup repositories to Kopia and Restic a day ago because I don't know why... I just love backups. Tinkering. Nothing I got paid to do. I just love it, was curious, did it, was super happy with the result.
> Only you and a few others in this thread do the "blame" thing. I have expressed my opinion, salted with some negative emotions due to frustration and misalignment of expectations.
I had no problem with your opinions, until this passage:
"Emacs seems to be carried by nostalgia from folks that love to tinker with their tools more than they like to actually get any job done."
That was a quite disingenuous statement. A lot of people who made breakthroughs in the industry used Emacs in the past, and some even use it today. I'm sure you didn't mean to say that Donald Knuth, Yukihiro Matsumoto, Guy Stele, Simon Peyton Jones, Rich Hickey, Joe Armstrong, and many, many others "don't care about getting job done", right?
And let me re-iterate once again, your negative emotions are yours only. They are wholly subjective on this matter. Thousands of Emacs users never had the experience you described. And your generalizing statement exacerbated it further. I would've maybe even accepted that there might be just a bit of truth in your opinions, but that angle pushed them all into the corner where they don't reflect true, undeniable facts about Emacs.
I'm not sure what you expected. Coming to a thread on a specific topic, brandishing a faulty generalization about people and asking to be more constructive? Don't you think that's somewhat narcissistic? Well, whatever makes you happy. I should've known better and instead of wasting time with you, I could've done some Emacs tinkering. But unlike you, I wouldn't blame someone else for that. Mea culpa. I own it.
> Thousands of Emacs users never had the experience you described
Which is a shame because that has misled me that Emacs is a trouble-free experience in the past. Wish I was one of those thousands.
> Coming to a thread on a specific topic, brandishing a faulty generalization about people and asking to be more constructive?
For starters, I didn't claim anyone is lacking basic curiosity or implied they are bad programmers, didn't I? Escalating from a point of subjective opinion of someone (me) to these things is still unjustified.
> they don't reflect true, undeniable facts about Emacs.
Another undeniable fact is there are golden paths, and anything outside them is pain. Sad but true. Not only for Emacs but for a lot of software.
Makes me feel super lonely when I write stuff that can parse configs from 3 major versions ago and accounts for partial parsing failures. I know I am not the only one but hell, there aren't many of us out there sadly.
> I should've known better and instead of wasting time with you
You should have known better indeed. If somebody is as jaded as myself, the only way to them is to give them a practical solution that will take them 3 minutes. Everything else is doomed to fail because I tried almost everything else there is and was unhappy with the results.
Next time less preaching, more practical step-by-step articles. ;)
---
Ninja EDIT: just LOL, after 2 weeks of me not starting Emacs but having it run its package updates from the CLI, and now I am greeted with this:
"Symbol's value as variable is void: treesit-language-source-alist"
Seriously. I am only doing what's recommended to do: periodically update packages. And this is the result.
You kinda can, these days.
One of the main issues is that Emacs is, out of the box, the most complete toolbox you'll ever see, while at the same time being very incomplete. You have an email client, spreadsheet, unit converter, ASCII drawing, debugger, file explorer and so on and so forth. Meanwhile, you open a Python file and you are lacking a bunch of stuff that the likes of VSCode have out of the box.
So the solution is to customize, and that takes an inordinate amount of time.
Thankfully, some other people have solved this for us:
https://www.spacemacs.org/
Spacemacs has VI commands by default - and I don't mean just the simplest keybindings like some VI emulators do, it's using evil-mode and it's pretty good. It can also be used in 'holy' mode (Emacs keybindings).
There's also(the one I use):
https://github.com/doomemacs/doomemacs
Either of these will get you a much more modern Emacs experience out of the box. You may need to add packages (it wouldn't be feasible to add all packages that everyone could possibly want), but they make it easy. Even though Emacs now comes with a package manager, it doesn't have any opinion on how you configure things. Both Spacemacs and Doom Emacs are opinionated, and that's a good thing.
Sure, you still need to learn concepts and keybindings. Thankfully, there's no shortage of tutorials, and Emacs own built-in documentation is very good. It also has a built-in tutorial, which is how I learned.