Yet another emacs/vim article, and I always look for an excuse to get excited but never can.
It seems that the speed at which I think/code is much slower than the speed at which I type. So I can't imagine that I would benefit from skills in emacs/vim-fu.
Is this preconception valid, or can anyone debunk?
VIM is not only about typing. It's about editing, which involves making a small change in one place, then navigating somewhere else, and making another different small change etc. This is where VIM is unbeatable, because of ridiculously many fast ways to navigate and edit intelligently (in a very small amount of keystrokes). You don't have to type 120 WPM do be faster in VIM, but if you are a fast touch typist, you can get insanely fast in VIM.
Besides once you can edit faster, it's surprising how your "speed of thinking" also improves dramatically :D.
Agreed. Navigation through a file without using the mouse or arrow keys greatly speeds up misc. edits in a large tree of files.
Other upsides are the ability to delete text without the backspace or delete key, and to perform more complicated operations on a file, such as full regex search-and-replace, macros, and so on.
Really what it boils down to is a powerful text editor that lets you keep your hands on the keyboard at all times- which of course is not appropriate for all tasks, but very useful for many.
This is a huge deal, and you've done a great job expressing it. I definitely find that I think faster as a result of being a vim user / being in vim. Since most of the actual editing gets thrown to muscle memory, all I have to do is think 'gosh it'd be nice if that refactoring happened' and it does, while I'm on to thinking through the next step.
I'm constantly mortified at how rarely my co-workers/employees use vim macros. I make vim do the hard parts for me.
It's not so much about the speed at which you think as about how quickly you can execute the changes once you've thought of them. I find it discouraging to have to fight my editor once I've thought of the change I want to make. Also debugging speed counts too. I find there are a number of "oh I should tweak that changes" which don't really require much thought.
This is a circular argument (or some sort of thing like that), but if you ever find yourself at a *nix command line prompt and need to edit a file, you can be certain that vim will be available. Basic familiarity with it can be helpful.
Personally, I used to write a ton of perl inside Vim as a student, but these days I'm in VS all the time, and only use Vim like I would use Notepad - when I want to do quick edits in a file that isn't worth the heavy handed-ness that is starting my IDE.
I'm like you - I spend more time thinking about my problems, and typing them isn't usually a hindrance. If I find that my typing/keyboard navigation speed is holding me back, it's a sign that I designed myself into a corner where I have to write a ton of boilerplate/repetitive code.
> but if you ever find yourself at a nix command line prompt and need to edit a file, you can be certain that vim will be available. Basic familiarity with it can be helpful.
True, but I've been getting by for the last 20 years with little more than 'i', 'x' and ':wq' (or ':q!') for changing system settings. The point of mastering vim as an efficient code editor is far beyond what you need to get your nix settings sorted.
If you're willing to spend $99, viemu is a wonderful vim emulator for Visual Studio.
For a little more you can get it for SSMS, too. What's really fun is highlighting stuff with visual mode and just hitting F5. Need to run a subquery? Get the cursor somewhere in there and vi( F5. And macros sure help with repetitive sql constructs.
Once you get used to a good editor (Vim or, for me, Emacs) you don't have to think about how to edit a file, even you're doing something relatively complicated: it becomes a natural, almost instinctive action. This not only increases the speed you enter text or navigate, but also reduces the friction when actually entering your thoughts into the computer.
It seems that the speed at which I think/code is much slower than the speed at which I type. So I can't imagine that I would benefit from skills in emacs/vim-fu.
Is this preconception valid, or can anyone debunk?