VIM is a quite mature and capable platform, not the same vi I used years ago on Sun stations. It is a rewrite of the vi editor, with Bram Moolenaar as the main author and maintainer. It has all the major features you'd expect from a modern text editor such as syntax highlighting and scriptability.
Learning it has been quite fun and the transition from emacs to VIM has been quite enlightening. Here are some of my observations as I move from one to the other.
- This honestly is the hook that got me to try VIM in the first place, the comment that VIM could be scripted with Python. I've got my weak spots, and that hit it. I have never fully wrapped my head around emacs lisp, and never thought that it was an appropriate scripting language for an editor. VIM has it's own language plus allows you to script in other languages. Talk about pushing my buttons.
- Emacs is driven by Control and Meta key combinations. They're nice and short but not very mnemonic. VIM on the other hand uses words, honest to goodness words to perform actions. Part of this difference is modalness, which I will talk about next. Want to create a new buffer? That's :new. How about editing a file? That's :edit. All of the commands have shorter versions that are accepted, for example :e for :edit. The neat thing is that you can type in a partial command then press the tab key to cycle through all the possible completions. That's the power of language.
- VIM has a modal interface, that is, you can be in one of several
different modes at any one time. For example when you first start
editing a file you are 'Normal' mode, press
aand you are in 'Insert' mode, a mode that allows new text to be inserted. It's interesting that 'modal' interfaces today are generally eschewed, being considered too difficult to learn and too mistake prone. I thought this too until my switch to VIM. Interesting also that I just saw a small bit of an interview with Dr. Douglas C. Engelbart, who for just one of his accomplishments invented the mouse. He talked about the current user interfaces to applications as being mouse driven and very easy to learn, but in the long run that same mode of interaction made the programs less productive than it could be. Using the mouse, Ctrl keys, and Meta keys allows you to avoid creating a program with a modal interface, but at what cost? Drop language as a primary interface mechanism and you can create a non-modal interface, but in the process are you losing too powerful a tool? It does make me wonder if modality and language are the key to the popularity of certain programs, for example for the third year in a row Vim was voted favorite editor. Similarly there is the fanatical following of xyWrite.