Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Shared Atomic Object vim configuration
VimL Common Lisp Ruby Python Clojure Scheme Other
Branch: master
Failed to load latest commit information.
after Highlight strings in cucumber steps
autoload Upgrade align.vim
bundle Merge branch 'master' of…
colors Merge branch 'master' of…
compiler update ruby plugin
doc Upgrade align.vim
ftdetect Add arduino stuff and my settings
ftplugin oops oops
indent moved feature and merb to optional and brought in tpope's cucumber pl…
plugin Add ,C-q to close all buffers. Fix an old fuzzy finder reference to u…
snippets my stuff
spell merged
syntax Add arduino stuff and my settings
tools don't do additional sorting after generating tags (causes problems on…
.gitignore ctrlp
.gitmodules Add vim-gnupg plugin as submodule.
README.textile duplicated word in README.textile
Rakefile upgraded ctrlp-cmatcher
alles-gvimrc.vim six eight is back on the wagon
alles-vimrc.vim move to end of Terminal when running tests
anderson-gvimrc.vim not-fullscreen by default for anderson-gvim
anderson-vimrc.vim add localvimrc as optional plugin
bacon-vimrc.vim Change colors or parens
baker-vimrc.vim Add arduino stuff and my settings
colthorp-gvimrc.vim added conqueterm, removed some crappy gvim settings I didn't mean to …
colthorp-vimrc.vim Update abolish
common-vimrc.vim Add ,C-q to close all buffers. Fix an old fuzzy finder reference to u…
crosby-gvimrc.vim Croz vim settings for gvim, currently biased towards windows
crosby-vimrc.vim croz stuff
english-gvimrc.vim Add my (drew/bacon-based) vimrc)
english-vimrc.vim Update vim config.
filetype.vim Added filetype capture for nginx
johnson-gvimrc.vim Update vim-ruby to fix syntax highlighting breakage.
johnson-vimrc.vim Update vim-ruby to fix syntax highlighting breakage.
macvim-vimrc.vim Customized for php and drupal work.
schaenzle-vimrc.vim Added vim_multiple_cursors to optional folder.
siva-vimrc.vim Added a keymap for quick search and replace in Visual mode. Added key…
skeletor-vimrc.vim Updates for Sartin and Skeletor files


Atomic Vim has a few ideas that (not entirely consistently) direct it’s approach:

  • graceful degradation across vim versions/capabilities
  • easy to set up dependencies (primary features depend only on ruby and ctags)
  • fully functional in a terminal – I don’t want to feel hamstrung over SSH
  • project/directory oriented – like TextMate
  • customizable on a project-by-project basis – particularly files indexed for fuzzy navigation and directories ignored from navigation and search
  • tries not to override existing vim shortcuts (at least, moreso than our previous shared vim config; surround.vim is included and is a notable exception)
  • tries not to add shortcuts for things that can be done just as easily with standard vim shortcuts (,v for vsplit is an exception, but I normally use <C-w>v out of habit)

To use:

Clone into ~/.vim, and add source ~/.vim/common-vimrc.vim to your .vimrc. brew install ctags to get exuberant ctags. I’ve mainly used the config under cygwin on windows, but gvim works pretty well (I’ve never tried setting up ctags and ruby on windows without cygwin).

Project settings

If your working directory contains a .vim file, this is sourced automatically. We mainly use this file to add directories to g:vim_ignore, causing them to be ignored in search and file navigation shortcuts.


Uses fuzzyfinder for file completion. Out of the box fuzzyfinder doesn’t offer textmate-style navigation. It does offer a mode to fuzzily match filenames in your tags file however. Since having an up to date tags file has other benefits, we opted to post-process the tags file and add fake entries for files of interest in which ctags didn’t find anything to tag.

,t shows files in your tags file, ,T shows tagged symbols, and ,<C-t> regenerates your tags file and updates the fake entries (requires ctags and ruby).

,e fuzzily finds files and directories in your current directory – a convenient alternative to ,t if you don’t have ctags available. ,l fuzzily finds lines in your buffer, a faster way to navigate within a file than searching. ,, fuzzily finds open buffers.

Any file with an extension in g:taggable_extensions is guaranteed to get a tags file entry, though any file in one of the g:vim_ignore directories will be pruned. This tweak to standard ctags behavior makes all the difference.


Ack.vim is included. ,f searches your working directory, ,F does so ignoring case. The command that’s used is a customized ack command which ignores directories listed in your g:vim_ignore list.

Running files

,r runs the current file. There’s a simple ruby script which dispatches on extension to run the file.

,R runs the current file at the current line. This is basically just used for specs and features.

It’s pretty easy to extend the ruby scripts, but this is an area that can use improvement.


,w closes the current buffer without touching your window configuration. ,W does so regardless of modified state.

,q is easier to type than :bd and ,Q easier than :bd!


,u shows a graph of your buffer’s history (if you have vim >7.3 and python support)

Clipboard Integration

,c as a prefix causes the next command to use the system clipboard instead of vim’s internal register. ,cp pastes from your clipboard and ,cy yanks to it. This is mainly for terminal use in vim versions prior to 7.3.


  • abolish – use :S to replace as you would :s, but it handles case variations for you automatically (and more).
  • fugitive – awesome git support
  • surround – modify things like quotes and parens
  • align – align code easily, such as forcing all equal signs in a series of assignments to be in a column
  • snipmate – TextMate-like snippets.
  • conqueterm – embed a terminal in vim (thanks janus)


To make it easy for each of us to customize the configuration and port our config between machines, we’ve each tweaked a few things in files like colthorp-vimrc.vim which we source after common-vimrc.vim.

Something went wrong with that request. Please try again.