Rooter is a Vim plugin which changes the working directory to the project root when you open a file.
The project root is identified by the presence of known directory, such as a VCS directory, or file, such as a Rakefile. Currently git, darcs, mercurial, bazaar, and subversion are supported.
By default you don't need to do anything: vim-rooter will change the working directory automatically.
You can always invoke vim-rooter manually with <Leader>cd.
You can change the manual-invocation mapping by adding this to your .vimrc:
map <silent> <unique> <Leader>foo <Plug>RooterChangeToRootDirectory
where <Leader>foo is the mapping you want.
By default all files trigger vim-rooter. You can restrict the files by passing a comma separated list of extensions like this:
let g:rooter_autocmd_patterns = '*.rb,*.haml,*.js'
To stop vim-rooter changing directory automatically, add this to your .vimrc:
let g:rooter_manual_only = 1
You can set your own directory and file patterns like this:
let g:rooter_patterns = ['Rakefile', '.git/']
Vim-rooter checks the patterns in the order given.  So to work correctly with git submodules you should have .git before .git/.
Setting your own patterns overwrites the defaults. Directories should have a trailing slash.
You can have vim-rooter locally change directory (:lcd) instead of
changing directory (:cd) by adding this to your .vimrc:
let g:rooter_use_lcd = 1
When vim-rooter encounters a non-project file, it won't change directory by default. If you would instead like vim-rooter to change to the file's directory, do this:
let g:rooter_change_directory_for_non_project_files = 1
Install into ~/.vim/plugin/rooter.vim or, if you're using Pathogen, into
~/.vim/bundle/rooter.vim.