Many people, myself included, prefer to work from the command line over navigating through highly constrained, clumsy GUIs. For those people, an editor designed for the terminal is a feature, not a bug.
I started programming professionally in 2015. I’ve tried all the “big name” GUI editors: Eclipse, IntelliJ, Sublime, Atom, Notepad++, VSCode. Now I use vim full time and I love it.
I grant that vim is not the most user friendly, but if you take the time to learn it it can do almost everything most IDEs do, including symbol based navigation, “fuzzy finding”, search-and-replace, etc. And that’s just native Vim — some plugins make these features completely comparable with (or better than!) IDEs.
I’m convinced that modal editing is the most efficient way to edit text, and vim’s biggest feature is how tightly integrated it is with the terminal. In a GUI editor, using a terminal means either using a subpar integrated terminal (like in VSCode) or switching over to my terminal emulator to run some commands and then switching back. Since I spend a lot of my time in the terminal, this is a big deal for me.
I actually did try Emacs for a while for exactly the reasons you point out. I heard how great it was and wanted to see for myself what all the fuss was about. I used it exclusively for a few months and gained some familiarity with Elisp, but eventually ended up going back to Vim (for a variety of reasons that I'll not get into here). In my experience Vimscript is "easier" in the sense of going from an idea of something I want to do to actually implementing it.
Even after using Emacs + Elisp for all that time, I never experienced that transcendental moment that so many fans of Lisp dialects seem to share.
What makes you say this? I don't necessarily _love_ Vimscript but it's a fairly straightforward imperative language. I also never understood why so many people rave about Elisp.
are two of the best lines I ever added to my vimrc.