So you've reached that suicidal point in your life... you have exploited vim to the max. You have written your fair share of vimscript. The plugins do what you want... 80% of the time. You accept, you compromise. And then you read about emacs, elisp, and evil-mode.. You open the emacs manual and you see 680 pages full of built-in features. All of which are essentially commands that may or may not be bound to keys. Mmmm... are you drooling already?
So what annoys me about vim? Well... the plugins get it right... sort of. And that annoys me. It distracts my focus, it destroys my zen. For instance, when I use CtrlP, I want completion suggestions for everything in the same window where I am currently editing so that I do not have to covertly shift my attention away. It's nitpicking, but 100 small tweaks here and there that are not possible without patching upstream vim plugins would make my life so much easier.
Enter emacs. There is a switch, a variable, a toggle, a command for virtually anything. Emacs essentially is a "text editing API", and you can invoke functions in the API using the keyboard.
One example is that I like org mode. But org mode puts headings next to each other without a newline. Vim plugins typically are not so well thought out (IMHO) that you can tweak these subtle behaviors. Well, enter emacs. There is just a variable for that:
(setq org-cycle-separator-lines 1)
Whenever you fold headings, there is a newline between the headings.
In addition to this, creating a new heading can also leave a newline above and below, like this:
(setq org-blank-before-new-entry '((heading . 1) (plain-list-item . nil)))
This tells emacs to add 1 newline before a heading, but not before a list item (like a bulleted or numbered list).
It is insane what kind of bizarre configuration options you can set. It's great for people with severe "compulsive editor OCD".
Another thing that emacs allows you to do, is to combine major and minor modes. A major mode is what eclipse would call a "perspective" or "environment": it has certain ui features, certain commands and settings activated for particular purposes and may alter the editing behavior.
For instance, python has the "elpy" package, which activates "elpy-mode" when you open .py files. And then there is "org-mode" for org files. Etc. Minor modes are alterations or variants on major modes. For instance, there is this awesome "auto fill mode" which you can enable everywhere that automatically basically wraps lines.
But get this. In vim you have EITHER python OR javascript mode. In emacs you can combine major modes. For instance, my primary language is python so I do documentation in ReStructuredText (REST) but I love org-mode. Guess what? You can have REST highlighting and functionality within org-mode by activating both major modes simultaneously!
But the struggle is... reading through the manual (682 pages) and then elisp intro (300) and then elisp reference (1200) and then org-mode manual (200)... pfff...
And then the custom config starts...