> the actual input time is usually less then the time thinking about what to implement and how to do it.
1000x that! I never understood what people mean by being "more productive" with vim. As a developer I don't edit text - I reason about architectures, algorithms, and data flow. Actual typing is the smallest part of the job and I don't get paid by lines of code anyway...
> I never understood what people mean by being "more productive" with vim.
But you understand why people plug a mouse into their laptop instead of using the touchpad, why they use Ctrl-C instead of copying with the mouse, why they autocomplete code in the IDE using keyboard shortcuts instead of clicking through menus and why they sometimes prefer a physical keyboard on their iPad instead of typing with two fingers on a non-tactile screen?
Sometimes it's not about being more productive but about turning the stuff you do every day from a chore riddled with tiny annoyances into a more enjoyable, coherent experience. With Vim I don't have to worry about annoying "smart" features, popups with suggestions I never asked for, no need to switch between mouse and keyboard all the time for little things like selecting some text or opening a file, and at the same time it has the most flexible system for custom keyboard shortcuts I have seen to date.
I do everything with the keyboard in VS Code, in normal, non-vim mode and it's way better than vim. What vim does when you type out entire command sequence words and patterns, VS Code lets you do with a single keystroke or chord.
In VS Code there's also no hidden mode with zero discoverability on how to exit it. And it's easy to configure VS Code with new extensions that you can find and install right in the program, while vim will have you searching blog articles to find the right plugin manager and plugins to manually download and configure - what a hassle.
There's absolutely no reason for modern programmers to learn vim.
That's all just a matter of preference. I find modal editing far better, you don't, and that's fine. I'm not sure what you mean with "typing out entire command sequence words and patterns" though, if you type whole words in Vim to achieve something other than writing text you probably overlooked at least one quicker way to do the same thing, and if not you can just define a custom shortcut in seconds.
> vim will have you searching blog articles to find the right plugin manager and plugins to manually download and configure
Downloading a plugin manager is a matter of a single bash command and adding any other plugin afterwards doesn't require more than a single line in the configuration file and a single command. Sure, it's more than one or two clicks in an integrated browser, but I don't install new plugins for months at a time, I don't need my editor to optimise that step.
VS Code is definitely a great program, but to me it feels too slow and inflexible.
> There's absolutely no reason for modern programmers to learn vim.
Absolutely no reason except the potential risk of learning something one might like, or even worse, prefer ;) As a modern - or at least young - programmer, I can definitely say that I do not miss other editors and their "modern" paradigms and UI quirks.
There is though. And not only for programmers, I am not a coder and I use vim emulation in multiple applications every single day. I spent 15 years of my career thinking like you, then it clicked. Btw, one of the beauties of vim is that you don’t need to memorize the command sequences, only a dozen of “verbs” and text objects. Vim is not about extensions, it’s about the most natural way of editing and navigating texts. You simply tell it - scroll down two pages, remove this paragraph, change the text in parentheses, copy from here to the end of the next sentence. You don’t need to memorize commands, you simply interact with your editor in a natural language. That’s the power of vim, not the extensions.
My personal answer: I'm touch typing. I can do so without looking at the screen. While I'm typing, I can think of what I want to say next. At least to some degree.
Vim helps me to stay focused, to stick to my thoughts instead of having to work with the IDE/editor.
I don't have to select a word, by detecting its boundaries (or point to it and double click), delete it and type an new word.
ciwnew word^
what looks like random chars is almost a reflex, when you get the Vim "grammar".
(of course, you can do it with any editor: ctrl-left, ctrl-shift-right, delete, "new word".)
So, yes, you're 100% right: programming is no about typing. And Vim helps me to care even less about typing the code.
It's small but a very important and useful part of the job. I can't tell you the number of times I've saved minutes or hours with Sublime Text's multiline edit feature and being able to quickly make large changes.
> I never understood what people mean by being "more productive" with vim. As a developer I don't edit text - I reason about architectures, algorithms, and data flow. Actual typing is the smallest part of the job and I don't get paid by lines of code anyway...
Vim isn't about reducing typing so much as reducing repetition. With most IDEs having built-in and automatic pretty printing today (and a larger overall adoption of automated and semi-automated linters) a lot of the repetition has indeed vanished for coding. Though there are still plenty of coding jobs out there that involve far too much copypasta, boiler-plate construction (where generators don't quite suffice or worse are not allowed), or turn out to have a lot more "data jockeying" [0]. Those are places where vim comes in handy. (VSCode's multiple cursor support can do a lot of that with a simpler brain model, but every now and then I still want the power of a good vim macro expansion repeated globally through a document.)
[0] For example: Take this hand-written in Notepad by an intern administrative assistant list of IDs copy and pasted from the front-end (full of random whitespace and weird notes), transform it into the right JSON document to curl back to your back-end API, then transform it again into a T-SQL query so you can verify for the manager breathing down your neck by way of the Access front end they are familiar with that the back-end still functions as deployed and made the necessary DB changes. (Presume this example is entirely hypothetical.)
1000x that! I never understood what people mean by being "more productive" with vim. As a developer I don't edit text - I reason about architectures, algorithms, and data flow. Actual typing is the smallest part of the job and I don't get paid by lines of code anyway...