Mostly I’m curious: aside from VimScript (which, at this point, I think is honestly a straw man in these conversations) what is it about Vim that its users don’t like? I’ve been using Vim for about 18 months; I’ve put together a vimrc that works for me and a small set of plugins that add functionality that I find useful.
What is it that drives people who really grok Vim to explore other editors—and then do their best to make them like Vim?
VimScript is more than just a straw man, IMO. VimScript is the entire gateway to extensibility of Vim and it’s abilities and flaws directly affect the experience in the editor. The main thing other than VimScript is how atrociously it handles external processes — especially if you want to interface with that process via a buffer (e.g. a terminal, REPL, whatever). Vim’s extensibility model is also complex and finicky.
Don’t get me wrong… I put a lot of love into my .vimrc to get it right. But, when I have to use another editor, the things that are truly integral to the essence of Vim and the powerful abilities it brings are actually a pretty small part of Vim.
I explored Emacs mostly because I was doing more Lisp and, being partially written in a lisp, Emacs' lisp support (esp with things like Paredit) is phenomenal.
I had a pretty elaborate vim setup https://github.com/mbriggs/dotvim, and now I am using emacs with evil. I’ll go through the reasons why, with a giant caveat being I actually don’t care what editor anyone who reads this uses, so long as they learn it and it works for them. As someone who has used both, vim shines for people who aren’t in to heavy customization. You can heavily customize vim, but it is so easy to make it dog slow, and even with a ton of work you won’t hit what you can accomplish in emacs. Here are some examples, and also essentially why I am no longer using vim, YMMV
If I want to run a command and have it pipe to another buffer AND not completely lock up the editor, I can do that with a few lines and compilation-mode. This is next to impossible in vim. I can split my editor window and have a shell running on the other side, that i can use all the keys and tools on that I use to edit code, again, not possible in vim. I can have a repl connected to my editor that the editor uses for auto-complete targets, and to pass code to to evaluate it. You can fake some of this in vim with a bunch of hackery, but it is nowhere near as nice.
There is also a pretty wide range of modes that are possible to do in vim, but for whatever reason just aren’t there. Some I use constantly all day:
smex lets me fuzzy narrow a list of all commands in the editor to find what I want (kind of like sublimes command pallet)
auto-complete will put up a light grey outline of text as you type if it finds things you can complete, if you want to select it you hit tab, if you ignore it it won’t intrude on your life.
magit is sort of like fugitive, just way more full featured, and the UI is quite a bit nicer. I have tried a bunch of git gui tools, and even those costing ~80$ really don’t hold a candle to magit (once you learn how to use it)
flymake tells me about syntax errors as I type
js3 mode has some of the best js indentation I have seen, and does full AST parsing, which means it can tell you things that are wrong with the code as you type. Linting on save works as well, but this is nicer.
org-mode is an amazing tool for many things. I use it for notes, team brainstorming sessions, todo lists. Lets say I am testing a csv output, if I paste it into an org mode buffer, I can c-c |, and it becomes a tablle that I can navigate, modify, sort, etc. Haven’t used any general purpose structured text tool that even comes close. If you pair it with deft, and store your org files on dropbox, you can have an amazing searching interface to a directory of your notes/todos/etc that auto-backups/replicates.
This is just scratching the surface. calc-mode is the most advanced calculator app i know of on my computer. regex-builder i use regularly. IDO mode is so sweet it is really painful to watch vim people use :Explore
Finally, the last piece is elisp vs vimscript. I got to the point with my vim usage that I needed to learn vimscript to do what I wanted to do, and I hated it. elisp has its own quirks and baggage, but it is so far ahead of vimscript in every way that you can barely compare the two. vimscript is a giant hack tacked on to a massive existing set of commands, compared to emacs which is an elisp platform that happens to have implemented editor functionality.
The formatting of your comment got messed up – it’s all one big paragraph. Here’s a version I made that corrects that, making the comment easier to read.
Use two consecutive newlines for a paragraph break, not just one newline. See my version’s Markdown source for an example. You can check your formatting with “Preview Comment” before posting.
I wish I had read your comment before reading the entire über-paragraph.
I think I actually hit some sort of bug. It was nicely formatted, but I edited, which created a new comment. Then I copy pasted the edit into this one, and made mega-paragraph. Now I cant edit :(