Using emacs AND vim isn't some mutually exclusive impossible thing.

There's lots of nice features in emacs. Look at it as a suite of tools (applications) that has an editor-like interface; debugging, email, even spreadsheet calculations - you can totally still edit files with vim and find emacs really useful.

For instance, you want a really powerful calculator? https://www.gnu.org/software/emacs/manual/html_mono/calc.htm... try that out

Try giving the "Grand Unified Debugger" a spin as well. The ease of Visual studio debugging is one of the only things I miss from Windows dev and GUD really comes close. I use vim as my daily editor but fire up GUD frequently for stepping through code.

Don't view the tools as mutually exclusive.

I used vim for over 25 years before switching to Emacs, so I'm perfectly capable of using both, and do use both.. but for me Emacs does virtually every that vim does and more, while vim only does a couple of things that I need that Emacs can't, and I find myself needing vim pretty rarely.

Professor Moriarty, a couple of questions:

Is this switch because you've moved on to LISPs?

Doesn't startup time and lag of emacs (compared to vim) bother you?

The startup time of Emacs is not an issue because I only start the Emacs server once and keep it running for a long time, connecting the Emacs client to it as needed. Once the Emacs server is running then connecting to it is as fast or faster than starting vim from scratch. Even restarting Emacs from scratch can be effectively instant, if you don't have a giant config like I do. Vim startup time can be slow too, by the way, if you have a lot of plugins. So, effectively, vim and Emacs don't differ on startup time these days like they used to.

As to your question about Lisp, it definitely was a huge draw to Emacs because I fell in love with Lisp and almost the entire ecosystem of Emacs is written in Lisp... and I'd certainly much rather program in Lisp than vimscript, or even Python (or any of the other more mainstream languages).

I remember coming across various things I wanted to do in vim that were pretty awkward to do because of how clunky vim and vimscript were. Lisp and Emacs just made doing what I needed much easier overall (though some things were still easier in vim.. for example, vim has some powerful features in its regex engine that don't exist in Emacs, even when using Evil). This was before neovim, so maybe it's better there, though since both vim and neovim lack Emacs' Lisp ecosystem, I doubt they'll ever be able to match Emacs in this respect.

There were a lot of other reasons for the switch to Emacs, like having deep web browser and shell integration, being able to read my email from within Emacs, and do a ton of other things from it.. org-mode was another draw.

While you were using vim, did you use tilling window managers? Did you use a dmenu-driven workflow that calls bash scripts and unix utilities?

When people talk about "composability" and "integration" of EMACS, it strikes to me that, vim+i3+unix setup is essentially the same. Just instead of LISP, bash/python is the glue language.

Yeah, but when everything lives inside the same Lisp environment, there is no need for glue. You have variables and functions, all with built in documentation, that are easily composed.

Vim, on the other hand, appears to conspire against the user's attempts to build reusable configurations. One plugin may require Neovim. Another may require the Python runtime to be configured and installed. Vanishingly few of them have built in keybinds, and those that do are not guaranteed to be harmonious with other plugins. And besides, should I write my config in vimscript or Lua?

It might sound like I'm picking nits, but I don't find it coincidental that the best configurations that people have managed to build have been upon the strong bones that Emacs provides. Doom Emacs (https://github.com/doomemacs/doomemacs) is best-in-class, providing harmony between all of the built in modules and their bindings. I uncomment a line in a config file and get full Python support, with refactoring and formatting and such, ootb. This ends up being true for a shockingly long list of languages and tools.

On the Vim side you have https://github.com/NvChad/NvChad which appears to no longer be accepting new plugins and https://github.com/LunarVim/LunarVim which appears to provide a really good programming experience but is limited in scope to a handful of core plugins and whichever LSP servers they can get their hands on.

I used to use Neovim and compose everything together by hand as well. I don't see why I should bother today when Doom Emacs provides the same experience I would have built for myself, out of the box.