Skip to content
:sparkles: My dotfiles (.vimrc, .zshrc, etc.)
VimL Shell Ruby Python
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin An even easier way to check if we're on master Apr 28, 2016
helpful-tips Ensure ZSH tips are on their own lines Jan 30, 2015
system Don't set an insane key repeat Mar 14, 2016
tag-clojure/vim Only enable rainbow parentheses for Clojure Mar 7, 2016
tag-git Auto-copy URL for newly opened PR Apr 28, 2016
tag-haskell Import Data.Text.Text unqualified Apr 18, 2016
tag-python Add tag-specific Brewfiles Oct 15, 2015
tag-ruby SO MANY NEW TEXT OBJECTS Mar 15, 2016
tag-tmux Revert "Add `copy-from-tmux` function" Jan 20, 2016
terminal-themes Update terminal theme Mar 30, 2014
vim spelling Apr 28, 2016
zsh Don't send Homebrew info to Google Analytics Apr 25, 2016
.gitignore Tell Vim about some correctly-spelled words Nov 30, 2015
Brewfile Install diff-so-fancy via Homebrew Feb 16, 2016 Tell Vim about some correctly-spelled words Dec 1, 2015
agignore ag: Don't ignore _fonts.scss Dec 12, 2015
ctags Extend custom Ruby ctags (via @georgebrock) May 14, 2014
curlrc Tell curl to always follow redirects Feb 14, 2016
editrc editrc Oct 11, 2011
inputrc tmux, don't ever convert <Enter> to ^M again. Jan 13, 2012 Add tag-specific Brewfiles Oct 16, 2015
nethackrc OPTIONS=sound is an invalid option Apr 28, 2016
psqlrc shut up, psql Nov 30, 2013
rcrc Actually, do symlink zsh/completion-scripts Apr 15, 2016
vimrc Use rcm's tag feature to split out Haskell config Oct 7, 2015
zshenv Do rehash in rbenv Dec 30, 2015
zshrc Don't `export` variables used only by Zsh Oct 31, 2015



Gabriel Berke-Williams' dotfiles for Zsh, ruby, git, and more.

Questions? Comments? Open an issue or tweet @gabebw.


  • OS X
  • Zsh (to change your default shell to Zsh: chsh -s $(which zsh) $USER)
  • Homebrew


$ git clone ~/.dotfiles
$ cd ~/.dotfiles
$ ./

It will install rcm and use that to safely symlink the dotfiles, prompting you if a file already exists (like if you already have ~/.zshrc).


rcm will symlink all files into place, keeping the folder structure relative to the tag root. However, non-configuration files and folders like system/, Brewfile,, etc will not be linked because they are in the EXCLUDES section of the rcrc file.


rcm has the concept of tags: items under tag-git/ are in the git tag, and so on. I'm using it for organization, so that if someone starts using Haskell I can point them at all of my Haskell configuration across Vim/Zsh/GHCi, all in one place.


Zsh has lots of good stuff in zsh/options.zsh and zsh/aliases.zsh.

The Zsh prompt is in zsh/prompt.zsh. It shows the current directory, the current git branch, the status of the git branch (changed, staged, clean, etc) and the current Ruby version. It is well-documented, and entirely self-contained: you can copy it into your dotfiles with no changes to test it out. (It does assume you use rbenv.)


Many scripts and configurations have been inspired by or outright stolen from my colleagues at thoughtbot. Of special note, I've stolen many things from Chris Toomey and Gordon Fontenot, among others that I'm sure I'm forgetting.

Something went wrong with that request. Please try again.