Which one to choose for development? Advantages & disadvantages of each?
¿Porqué no los dos?
https://github.com/doomemacs/doomemacs
I absolutely love the concept of modal editing provided by vim. But if you’re into all the things that Emacs and you don’t have the patientce to build your config from scratch, then Doom Emacs is for you.
+1 for Doom Emacs. It’s well-setup OOTB.
According to wikipedia, this war is raging since 1985 https://en.wikipedia.org/wiki/Editor_war .
Pick what you want, either is good. I use
vi
for editing text files on linux servers which don’t have Emacs installed. On everything else, Emacs.First thought seeing post’s title (still enjoy reading the opinions, none the less):
I use Emacs and have been since around 1986. If you’re big on extensibility, Emacs has the elisp programming language built in. Vim used to be more performant than Emacs, but with today’s processor speeds, it is hardly an issue. Emacs can emulate other editors, and as someone else mention Doom Emacs gives you the best of both worlds.
If you are on a Mac, all the text boxes already use Emacs keystrokes. Ctrl-a = Beginning of Line, ctrl-e = End of Line, ctrl-k = Kill to End of Line, ctrl-d = Delete Character, etc.
I use Neovim with a custom config, personally - Though I do currently have “look into Doom Emacs” on my personal todo list … So it really depends on what you’re after honestly.
If you love hacking/customizing your system and willing to spend time on it, go with Emacs. If you want something lightweight and fast with moderate customizability go with Neovim.
I would say the same as most it really depends on what you are doing, I program in Lisp a lot so Emacs is a natural fit. Vi/Vim/Neovim are in my opinion Technically better they are smaller and simpler however Emacs is a much bigger and more versatile. I ended up choosing Emacs specifically because it was bigger and more versatile. I do plan on giving Vim a try again sometime to see if it fits my needs better, once learning Vim Keybinds/Motions I find it relatively easy to switch between them, except when it comes to the editor specific apps like Org Mode.
Used to be a huge Emacs nut (ı still like it) but i converted to neovim because its more practical in a modern sense but helix is slowly taking me over. especially due to its speed and still looking very beatiful by default
I am a NeoVim user, and I started learning emacs once, but was really unimpressed with the multi-key shortcut soup. Now that Lua is baked into NeoVim anyways, and plugin devs don’t have to be Tom Pope, I expect the quality of vim plugins to explode and I’m hoping that we’ll catch up to all the things emacs has been ahead on in the next few years.
The best path depends you how much you like to tinker, your preferences, and your target platform. The learning curve is massive for either, and even after that it will take a lot of plugins and configuration to get close to feature parity of an IDE.
You might consider an IDE plugin at first. For example, there’s a VSCode plugin that integrates actual Neovim as the editor. There’s a Jetbrains (intellij, android studio, webstorm) plugin, IDEAVim, that very closely emulates Vim.
All that said, I use Neovim and prefer it over Emacs. The excellent Lua support in Neovim has eliminated the biggest complaint I had with Vim (vimscript vs LISP). Neovim has LSP support and can communicate with the same language backends that VSCode uses.
No matter what you do, learning Vim keybindings can be very useful as a lot of websites and local apps support it (e.g. gmail, github, less, lazygit).
Very interesting question indeed, one that is often debated among programmers.
It ultimately comes down to what suits your personal style and requirements.
Mostly, both have strengths and weaknesses, so it’s hard to universally recommend one over the other.
I used to be on the vim side of things. But recently have switched to helix. It is a modal editor similar (but a bit different from vim) but with most of the things you need plugins for built in, so no need to spend hours finding plugins and configuring things.
But whichever you like is really a personal preference. I have seen far more people use vim in the wild than Emacs. And you can configure Emacs with vi input mode.
If you work with servers knowing basic vi is a must as it is often the only editor installed on the system.
Kakoune/helix is also more responsive then (neo)vim````
Thanks for bringing up this alternative to Neovim. I’ve been playing around with it for a while. So far, it’s really nice!
I don’t have the solution.
I just want to say that I try helix since few weeks and it’s nice!
Sublime text! Neovim and the likes just stop being performsnt enough once you start adding extensions and I sort of need a good GUI. Sublime is still unbeatable, sadly.
Interesting, I’ve got plenty of plugins in my Neovim setup and I have zero performance problems. That includes auto completion, tree sitter, surround… I’m curious what plugins you were using that made it slow down
LSP and a really big project, although it’s not necessarily neovims fault
Now you’ve got me curious how big of a project that was - I’ve not really had any slowdowns or speed issues at all with Neovim, even paired with an LSP in some of my team’s biggest projects. Few hundred thousand files not counting vendor libs, that sort of thing.
I think the only thing I’ve ever seen really slow down was Telescope, and that’s because I have it showing previews of the selected file.
Few hundred thousand files
My definition of “really big” is changed. I was talking about around 10k files of source code.
The project is in java, the machine has 8 Gb ram, and when I open a different file it sometimes catches brief freezes - not to the point where it stops “being performant enough”, but still noticeable. Also, sometimes nvim-tree is slow when I expand directory, which is annoying
Hmm. I’m not super familiar with Java’s LSP setup and such, but my instinct is that it might be something to do with the performance of its syntax highlighting. The person I am, I can’t help but wonder what plugins you were using, but I won’t push to try and help you get it solved necessarily. Hope you’ve found a good solution with your current editor though!