I have been telling people for years that using an editor like Vim or Emacs makes you more efficient, but I have found that most people either do not particularly care, or worse still, think that the efficiency gains are surely marginal at best. I view this as an unspoken part of Vim's learning curve. You have to realize that it is worth the time to learn.
I only bothered to learn Vim after seeing somebody do some wizardry with it and wondering how they did it. But I didn't have the time to learn it then. I later had some downtime at work and was able to learn it. I imagine the learning process is similar for many people.
I’m not convinced; I have met a lot of people who were very high on vim and spent a long time furiously typing keystrokes and planning out their changes without realizing how much time they were spending on that thinking bit.
(Personally it also competes with the working memory of changes I am trying to make, but I am willing to concede that could go away with years of practice).
Simpler abstractions like sublime-style multiple cursors have almost the same power without the complexity of programming your editor live. I wouldn’t recommend new people spend time on vim, unless you like, expect to find yourself in freshly initialized Linux boxes or developing on minimal hardware often.
I thought the main idea of vim is that touch typers who are really fast can do everything without lifting their fingers from the main row, which is a really motivating reason imo, it starts to breakdown heavily when you dont already have this skill though
Even with that skill, I am arguing that figuring out a regex for your find and replace operation, or a sequence of commands to jump to the next line, are cognitively demanding in a way scrolling the mouse until you see it, or clicking around a minimap, is not. People do not tend to actually wall clock the time they spend thinking about what to type. I would have this experience too- I would feel like a wizard having stitched together a sequence of multiple commands, and remember that, not the fact that I didn’t get anything done that day I wouldn’t have with sublime text or vscode.
I think there was a time when vim saved a lot of time over other editors, and it still feels like a powerful time saving when you kick off a macro, but I am not convinced it actually is saving time over modern editors with their far easier to use features and plugins.
I've used Vim for 10 years+, and I think this is a spot on summary. One thing you covered well that I'd emphasize is Vim feels really good to use, which is insidious. There's a game-like satisfaction to using Vim that I think makes it difficult to objectively evaluate as a user whether it's actually more productive since it's so cognitively satisfying to use.
Even with all that said, I think the type of productivity that Vim's edited language provides is overall pointless. E.g., it just doesn't optimize things that are actually hard and/or time consuming (at least relative to other similar solutions to the same problems, like multiple cursors). The one exception being really complex edits, per the macros you mentioned (e.g., `:cdo norm` is the most effective way to do a complex edit that isn't supported by a IDE refactoring command that I know of), but I don't think most folks in this thread are talking about that when they talk about Vim's productivity (e.g., stuff like `ci"` is cool, but come on who cares, it's not like making small edits like that have ever been a big deal).
To be fair the importance for devs/programmers to touch type is often very exaggerated. Not saying it is not a benefit but is is far from a "must" or something that is a detriment to producing quality work.
In the days where secretaries were typing out memos from their boss touch typing was much important or needed.
I am likely bad at what I do, and am not a real developer, instead being someone who just uses "code" to look after infrastructure (or at least I was.)
I never felt a need to punch things out so efficiently that minute differences in time spent on or off keyboards, or my touch typing speed matter. Most of my time that consumes the budget allocated to me is honestly spent in researching and thinking. Once I get to writing the code, sure I could shave down the time to implement it by a few minutes each time, but its not enough for me to care about honestly.
That being said, I do use vim, but only because I was at one point a junior systems administrator and my CTO demanded to know why I was not already using it and instructed me it would be good practice to do so as its installed on everything we ran and so...vim it was. Not for efficiency, or because it empowered me but instead because it was there.
Now that I do more busy work instead such as discoveries, PIR's etc, sure my touch typing speed matters but its very different work.
Multiple cursors is a good alternative to recording a macro and executing it on multiple lines. But vim isn't good because of that. It is good because it is a language of simple but composable text objects and manipulations: ciw, dd, ci", gv, vapcU, gqip, and plugins that expand this language to add additional text objects. I have one installed that lets me use a function argument as a text object, so I can do something like da, and it will delete the argument (even if it is a complex expression) under my cursor, and then I can paste it elsewhere later. But I can compose that with anything. I could compose that with vim-surround, so that I could quote it: ys"i,
And of course there is also search and replace and lots of excellent plugins, which crucially work today as well as they worked 15 years ago. Tabularize is a vim plugin that lets me do things like realign
foo: bar
fang: wizz
with a space before bar, to make bar and wizz aligned. This is very convenient, and it is designed around vim's powerful regular expressions so that you can use it to align all sorts of data even if it uses weird delimiters or the delimiters are totally contextual.
This isn't programming your editor live, it is just composition of simple elements you learn gradually. At first it is just navigating from the home row (mice suck, especially on laptops), and dd to delete lines etc. Then you learn new text objects and new effects over time, and your O(m+n) work in learning them has O(mn) results.
I mean it depends what one use Vim or their editor of choice for.
For example I do think that efficiency gains when for example developing in Java are marginal if there at all.
Or for people who do not hate the mouse, or people who can't touch type and probably many more examples.
Also with how integrated vscode is these days, it is no surprise that many prefer it.
I only bothered to learn Vim after seeing somebody do some wizardry with it and wondering how they did it. But I didn't have the time to learn it then. I later had some downtime at work and was able to learn it. I imagine the learning process is similar for many people.