If You Want To Bake An Apple Pie From Scratch

Before you can develop an application you must first invent your development environment.

And it goes without saying that our development environment must be morally pure. There was a time when I was infantuated with the glamour of OS X and Textmate. But I can no longer standby and allow proprietary infiltration, proprietary indoctrination, proprietary subversion, and the international closed source conspiracy to sap and impurify...

Just the other day my ibook's battery charger was emitting sparks. I realized just how far the insanity had infiltrated my life when the apple store informed me that I would need to dish out nearly 100 bucks for a replacement charger. If I had 100 bucks I wouldn't own a laptop which sparks when you plug it in, and I certainly could not afford a Textmate license.

Fortunately there's vim. With a few plugins you can have an excellent ide setup on the operating system of your choice without using bourgeois software.

a screenshot of vim
Fig. 1 Showcase

1. Install vim

If you are using aptitude look for packages like vim-ruby or vim-gtk. When I compiled the vim 7.2 source on my machine the configure script and makefile automatically included ruby support. Once you have installed vim you can test whether ruby support is installed with:
:echo has('ruby') // returns 1 or 0

2. Install NERDTree Plugin

All of these plugings have installation instructions and usage documentation on their sites. Essentially you extract some archives in your $HOME/.vim directory. NERDTree

3. Install a bunch of other stuff

vim.rails Ruby Complete Supertab
>ls -R $HOME/.vim


desert256.vim  vividchalk.vim

NERD_tree.txt  rails.txt  tags

exec_menuitem.vim  fs_menu.vim  git_menu.vim

NERD_tree.vim  rails.vim  rubycomplete.vim  supertab.vim

# What your $HOME/.vim directory might look like.

4. Update Configuration

Once you have installed the plugins you might want to update a few settings make them more usable. The .vimrc file below:

* disables backwards compatibility with vi, ensuring more features
* ensures syntax highlighting is enabled
* adds some convenience mappings for nerdtree
* ignores case when searching
* has a folding convenience mapping
* highlights matches when searching for them
* sets two spaces for tab displays, vim.rails will force tabs to two spaces in rails project files
* forces the default supertab completion to omnicomplete

set nocompatible
syntax on
filetype plugin indent on 
nmap  :NERDTreeToggle 
imap  :NERDTreeToggle 
set ignorecase
nnoremap  za
set hlsearch
set ts=2
let g:SuperTabDefaultCompletionType = ""