There is a holy war in geekdom, fought by the most esoteric of UNIX hackers. The cause for which the war is being fought must be noble one. It must be something that geeks hold dear, something that they have to do every day of their lives. What is it that an average UNIX geek cannot do without in his daily life? "Editing text", yes you read it right, "Editing text". There were many sides to the editor wars but most editors were killed and there are only two left standing, which brings us to the bone of contention:
Vi(m) Versus Emacs
I will not hide from you, the reader, on which side of the war I fight. But I will give you my reasons. In this bitter turf-war for the holy grail of an editor, I pledge my allegiance to Vim, Yes, VIM RULES!
And why do I like vim? In the first place I like its modal way of operating. I can use keys without holding weird combination of control alt and shift to do meta operations. I am almost a touch typist, so it makes editing text using vim a breeze. With emacs I would have to hold keys to do just about anything other than typing in text, just to get out of the editor I need to type "Control-X Control-C", which is a pain.
Emacs is supposed to be powerful and extensible, with LISP integration. But have the emacs activists taken stock of vim's powerful scripting language and its perl/python integration? I would rather learn python or use perl (I already know it..) than learn LISP. You may call it a personal whim, but I would argue against it citing the practical use of the languages in question.
Now to the things that I CAN do in vim.
- I can seamlessly browse code written in various languages using ctags and cscope.
- I can wildly customize my editor to do all sorts of nifty things using keyboard shortcuts.
- I can do things like search within a function, search within an if-else block
- I can fold parts of code away.
- In fact my gvim is configured to do all of the above and functions like a mini-IDE!
I plan to write a mini how-to on how to get the maximum of your vim for beginners sometime. Till then, experiment and you'll see why emacs is not for you :-).