Hacker News new | past | comments | ask | show | jobs | submit login

As it stands Evil is the only Vim keybindings add-on that actually feels like using Vim. Everything else will inevitably be missing a feature or not act in exactly the way you expect, leading to disappointment. That and you also lose out on Vim extensions.



Evil is very good, but moving to Emacs from vim was not quite the smooth ‘just use evil and you get the best of vim with the power of Emacs’ experience that people say, at least for me.

I found it needed some extra configuration before it felt like stock vim.

C-u isn’t bound to "scroll up" by default with evil, for example. You have to (setq evil-want-C-u-scroll t). That took a while to figure out and I expected it to work that way by default.

Then you have to (setq evil-want-keybinding nil) and install evil-collection and evil-magit to be able to use vim movements in other Emacs buffers.

Or you have to learn Emacs shortcuts and just use vim for editing, but that feels awkward for a vim native.

As an Emacs newbie I still find it unsettling that documentation for packages and for Emacs itself all uses Emacs-style shortcuts. Of course it couldn’t really be another way, but I either have to learn those or remap things to vim-style leader bindings. It makes vim usage in Emacs feel a little uncanny at times.

I could use a distro like Doom which has it all wired up for vimheads already, but then I’m learning someone else’s shortcuts and system, which takes away from the point of Emacs a little for me (the idea that you make it your editor).

Maybe it gets easier with time. If any other vim users made the move to Emacs I’d love to hear some tips!


My advice at this point is something along the lines of "use Doom," because all that time you would normally put into wrangling evil into doing what you want it to would instead be offloaded onto another person who makes wrangling Emacs in general his hobby.

It's like the small things such as binding C-u to scroll up by default are taken care of for you out of the box. How many people who use Evil who are already familiar with Vim are going to not end up setting that configuration option in plain Emacs at some point? (Maybe those who use page up and page down, but not even those commands do the same thing as C-u and C-d, at least in Evil.) Everyone else will have to add that line to their config, and that quickly gets unmaintainable if what you actually want to do is focus on work instead of building a proper Emacs framework. So it is set for you already.

Doom is basically that for Evil configuration and several thousand other things.

One downside is having to undo some of Doom's built-in things if they're annoying. One example of this is having to insist that it uses a specific set of completion handlers and not globally set a hardcoded list for every mode. Still, the amount of time you'd have to do this is less than the amount of time it takes to build 30% of Doom for just the features you want from scratch.

And yes, it is at times a sad feeling needing to fall back on someone else to do the hard work for you, but the realities of work and limited free time essentially dictated that decision for me.


Thank you, that's helpful, and I recognise a lot of the pain points and pluses there.

I started with Doom, loved it, but wanted to understand Emacs better so ended up writing my own config.

I now understand Emacs a _little_ more, I know what every line of my config is doing, and there isn't an extra layer of abstraction or opaque bash commands I have to periodically run. I also feel more comfortable that Emacs with a home-grown config will last me 10+ years. It's incredible what Henrik has achieved and the level of dedication and support is astounding, but I wonder how sustainable it is as the community inevitably grows.

Rolling my own setup has certainly made me appreciate Doom a whole lot more, though. And it's hard to shake the feeling that I could spend a year or two just hacking on Emacs to get half of what Doom offers.

It's like the trap of wanting to get into game programming and finding yourself writing a game engine instead of a game. (I picked up Emacs to learn Clojure and other Lisp dialects better.)

It's also a little silly to have an expectation that I need to understand everything that Doom does behind the scenes. I don't have that expectation with Emacs itself, or with IntelliJ or vim, or VS Code…

Maybe the answer is to just read the (smallish) Doom codebase to understand it better and contribute however I can, be it in Discord, with cash, or PRs. And get back to hacking instead of hacking Emacs…


Or you have to learn Emacs shortcuts and just use vim for editing, but that feels awkward for a vim native.

FWIW, I went with this approach and found it to be the sanest/best for me. The attractiveness of vim is the text editing experience.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: