I think people overestimate how much time they spend doing repetitive tasks like copying and pasting with definable patterns. I'm a Java programmer, and I certainly do this, but I can almost always use a simple search and replace to make it work in IntelliJ. But, for the sake of argument, let's say that if I were to do this once a week, maybe for five minutes, copying and pasting manually with a mouse, that five minutes might feel like an eternity. Vim would do this quickly, but it would also slow me down when I do project-level refactoring, like renaming a method, which IntelliJ does globally in a matter of seconds. Sure, you can configure Vim to do this kind of stuff, and you can combine it with other tools... but at what point are you getting diminishing returns?
On top of it, as a web developer, I already need to know so much, from front end with HTML, CSS, JavaScript, jQuery, to Servlets and Spring MVC, to SQL and all of the glue that binds all of this mess together like XML and supporting tools like SCMs. My head is absolutely full of information. In this environment, I am convinced that Vim is a complete waste of my time. A good IDE is ten times better at handling the vast majority of tasks I encounter day-to-day.
If anything, I think Vim is like truck nutz for programmers. It's all about projecting an image of competence and bravado.
I agree with parts of your comment, except for two extremely erroneous phrases. «My head is absolutely full of information.» and «...Vim is like truck nutz for programmers...»
- If your head is absolutely full, do yourself a favour and stop working in IT. Go do something else. There is now other way to put it.
- Go watch someone proficient in vim at work. You'll lose that image of truck nutz you have.
I do consider vim the wrong tool for the job of editing Java code. Refactoring with Eclipse (in my case) is wonderfully powerful and something impossible to achieve with vim. HTML/CSS/Javascript/XML/most everything else? VIM. Absolutely.
Even with the wonders of Eclipse refactoring tools, I do miss vim many times. VIM is like the command line of text editors: lots of small tools, with incredible combinations.
As for the bravado, everyone knows real programmers program using butterflies: http://xkcd.com/378/
A few examples of why vim has some non-obvious power:
* html you can change inside of a text object. If you are say anywhere inside of a link <a href="som|e link"> you can ci< and you have deleted the whole thing and are left with <|> (where the cursor is denoted by |) If instead you typed ci" you would be left with <a href="|"> this is a very powerful pattern
* you can script little macros that do text editing on a macro scale very efficiently. This is more useful than a simple find and replace.
you want to make a list that starts with a number, has that number in it and is incremented by one(or two or...) every time.
Type the first sentence
1, xv001, "", more stuff.
exit out of insert mode. jj or esc
start recording the macro into register r: qr
yank the line and paste it yyp
go to the beginning of the line 0 or ^
increment by one and move one word right and increment the next number: ctrl-a w ctrl-a
move down one line, j
exit recording q
run macro r 100 times 100@r
The nice thing is that if you mess something up you can paste whatever is in register r, edit it, yank it back into register r and run it. It sounds like it's slow but it's all real time editing and you are doing it interactive so you don't have to do it blind.
There are many more things that make vim style interactions a boon to your productivity but I don't have a lot of time to comment on it. hopefully I touched on enough that it piques your interest to at least give it a shot.
Vim is so popular that you can get pretty good emulation in a lot of IDEs so you can have the best of both worlds. vimemu for Visual studio is supposed to be very good. eclipse has eclim, hell even emacs has evil mode.
Well the formatting got messed up and it's too late to edit it:
* html you can change inside of a text object. If you are say anywhere inside of a link <a href="som|e link"> you can ci< and you have deleted the whole thing and are left with <|> (where the cursor is denoted by |) If instead you typed ci" you would be left with <a href="|"> this is a very powerful pattern
* you can script little macros that do text editing on a macro scale very efficiently. This is more useful than a simple find and replace. you want to make a list that starts with a number, has that number in it and is incremented by one(or two or...) every time.
Type the first sentence 1, xv001, "", more stuff.
exit out of insert mode: jj or esc
start recording the macro into register r: qr
yank the line and paste it: yyp
go to the beginning of the line: 0 or ^
increment by one and move one word right and increment the next number: ctrl-a w ctrl-a
Java is not a language I program in. I have used it in the past in its typical environ: over-engineered, over-abstracted monstrosities and during that time I indeed had to refactor a piece of code a couple of times.
Currently I work in C++, Python, JavaScript and Common Lisp. Auto-completion is pretty OK and the need to refactor comes up, well... never. Note that these two features are brought up the most when people want to praise the advantages of IDEs over powerful text editors like Vim and Emacs.
(Actually, Emacs' default Common Lisp environment is unsurpassed by modern day IDEs.)
One gains so much editing power in manipulating text objects and navigating through code by using Vim (well, Vim emulation in Emacs in my case) that I gladly trade in the ability to effeciently refactor enterprise-level Java or C++ code.
On top of it, as a web developer, I already need to know so much, from front end with HTML, CSS, JavaScript, jQuery, to Servlets and Spring MVC, to SQL and all of the glue that binds all of this mess together like XML and supporting tools like SCMs. My head is absolutely full of information. In this environment, I am convinced that Vim is a complete waste of my time. A good IDE is ten times better at handling the vast majority of tasks I encounter day-to-day.
If anything, I think Vim is like truck nutz for programmers. It's all about projecting an image of competence and bravado.