There is also this thing called Emacs. I clicked through to the SciTE screenshot, and noticed that Emacs can do all that cool stuff... while still being very flexible, like vim.
(Actually, I would not call vim flexible, but I am more of an editor programmer than an editor user.)
I'm curious: Is it really worth it to learn vim for the productivity?
I've used vim as far as simple search, visual mode, and copy/paste. One of the things I've noticed when attempting to learn more vim is that when using other editors I use the time it takes to scroll or navigate to think about what I'm doing or what to work on next. From that (possibly naive) perspective, the effort to learn vim seems less necessary. Am I the only one who thinks this way?
Note: I make an exception for regex search and replace as an amazing power feature, but the GUI editor I use most of the time can do that anyway (Notepad++). Also now I'm really interested by snippets after having looked them up.
- discovering errorformat and using error format and quickfix to solve the complains a style checking tool outputs. This turned 'look in file. unterstand filename and line number and remember the reason, enter long path, navigate to line, fix reason' to ':cn, read reason, fix reason, :w, goto 1', and (opposed to some IDE), I can still focus on getting things done first and then fixing style issues.
- registers and macros. Recently, I had a number of similar fixes to do, even though it was not entirely trivial to describe those fixes with a regular expression. However, it was possible to describe the sequence of operations as a number of vim movements and vim operations. Thus, I could record the editing of a single file into a macro and just apply this macro to each file. This turned around 30-40 minutes of annoying things into like 5 minutes.
- after case b, learning about arglists and argdo, which would have cut down the time required for the change to a few seconds, opposed to several minutes.
If all you use an editor for is searching, copying, pasting, and typing simple documents, then a simpler editor than vim would probably suffice.
But if you use an editor for programming or composing more complex documents (such as LaTeX articles/books), then learning vim could save you a lot of time.
vim is also handy for editing lots of small, simple documents scattered all over a filesystem and on many different machines (tasks that system administrators have to do quite frequently).
Take a look through vim.org's script repository for just a small inkling of what vim could do.
i use vim because using the mouse hurts. this replaces the time required for moving my hands from kb to mouse and back with time spent noodling around in vimtutor and googling vim commands ;)
Going through all of "vimtutor" and then asking for help on the #vim channel on the freenode irc network should make learning vim as painless as possible.
There is a lot to learn, and vim certainly isn't the most intuitively designed editor on the planet; but it is one of the most powerful editors. So the work you put in to learning it will be well rewarded in productivity gains and sheer number of things that can be done in it that most other editors couldn't even dream of doing.
And once you learn it, vim is actually quite fun to use; and you might find that going back to using more traditional editors is painful, because of their inefficiency and lack of features compared to vim.
Every symbol and every letter (upper- and lowercase) on your keyboard has a specific meaning. Spend an hour trying out what all (80 or so) do - that's fun!
Then do some actual editing and try to navigate as efficiently as possible - make it a sport. Try to use as many different commands as possible.
There are some two letter commands (e.g. ZZ, gg, zt) but not that much. There are some CTRL-key commands, but few important ones. And there are tons of command-mode functions (e.g. substitution), but there are few that you really need to know.
Only "some" 2-letter commands? Try looking through ':help z' and ':help g'.
Ctrl-key commands become really important in insert and command-line modes.
And not to nitpick, but when you speak of "command-mode functions (e.g. substitution)", I think you really mean command-line mode. Command mode is another name for normal mode. Please try not to confuse the new/prospective users.
The Colemak layout is wonderful but not so much for Vim where probably the most used key is the colon. Colemak moves this to a less accessible position, one row up, making it more painful to use constantly, as you pretty much have to in Vim.
my personal reason for using vim is that i love the modal editing. You drop into edit mode, do a single edit, then hop back into command mode and flip around to whatever is next. This singular edit becomes most exciting when you need to undo or redo. Rather than wait for each little keystroke to undo, your edits become singular chunks. If you hop in and out of command mode with each edit in concert with how you think about the changes you are making, then undoing (something i do alot..) becomes streamlined.
there is a nice tutorial, if you are too lazy to follow the lessons just print the cheat sheet and place right near your keyboard. Vim isn't difficould but just needs some time at the beginning but ... once you get used to it you'll miss it when you can't have it :)
The author mentions snipMate, the vim plugin for snippets. I've started to really embrace this plugin and it has made programming much more pleasant, since I only type the stuff that matters and none of the scaffold (especially in HTML)
The author seems to be in a windows environment and would probably benefit from like etexteditor which is pretty good, the thing about windows is that it seems really hard to use vim in as I'm used to going to a directory or using autocomplete to chose files from like say
vim ~/git/con\t
and getting
vim ~/git/configs/
and so on. Which seems to work much better in a nix environment.
Personally I use emacs most of the time though vim does work well for quick edits.
(Actually, I would not call vim flexible, but I am more of an editor programmer than an editor user.)