I’ve been using Notepad++ for a while; in fact, I’ve even started using Launchy for that “load this resource into the editor right now” functionality that many fuller IDE’s like Eclipse has. It has syntax highlighting, split window view, code collapsing, parentheses (and other delimiter) paring, automatic indent, block commenting.
However, it seems that everywhere I go, people are using vim for their programming needs.
I know the basics of vim; it’s my main “basic text editor” when I’m on a linux machine; I use it like I’d use the basic Notepad on Windows. I get the controls, most of the shortcuts, the repetition eliminators, etc.
What I’m not quite understanding are these killer apps that people are espousing about. How “debugging Ruby in vim was a life-changing experience”, or how, when using it, magic occurs.
Am I missing some essential plug-ins? Is there a dimension I’m not seeing? Should I just shut up and start using it for a bit, to see? How do I get syntax highlighting?
I’m specifying Ruby specifically because I’d like to find some plugins for it. Note that I am not using Rails, and answers should be rails-independent of possible. But I would appreciate some general vim-ness koans about programming in other languages, as well.
Thank you, and I hope my question isn’t too vague or inspires any nasty editor wars.
I use vim for all my Ruby programming, and I think its customizability is its killer feature. With vim you can do just about everything to text you can imagine, if you’re willing to invest the time to hunt down the plugins that do what you want or write a few scripts yourself.
I’ll just list a few things I like about vim for programming (in no particular order):
Syntax Highlighting
The ruby syntax highlighting is very nice. One thing in particular that seems to be somewhat unique is that keywords can be colored differently depending on context. This isn’t used as much as I would like, but you can easily see whether that
endstatement closes, say, an if-statement or a function definition.Also nice is that, since vim knows which parts of the text are comments, you get spell checking for these only.
Automatic indenting.
When you’re writing code, vim will automatically place the cursor at the right indentation level, so you don’t have to worry about that. I also find myself invoking this functionality manually by selecting a block and pressing
=to automatically (re-)indent everything I highlighted.Autocompletion
I use a plugin that automatically pops up completions.These are very versatile. They know the methods of classes from the standard library, look at other files you have open (good for variable names and class methods), recognize when you’re typing a filename, etc.
Snippets
There is a plugin called snipMate that provides shortcuts for often used text snippets. It’s a big help with writing tests and the like.
Code folding
Scriptability
As I said, vim’s scripting is very powerful. Want extraneous whitespace at the end of the line deleted automatically? Just write a one-line script.
Plugins, Plugins, Plugins!
There are a ton of plugins that help you with all kinds of things. Git integration, Rails integration, Rspec integration, autoclosing parentheses, matching keywords that open a block {
def,do,if,while, etc.} to theirend… the list is practically endless.