Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Shell VimL JavaScript Ruby
Branch: master

Git: add `git hub merge` command

This should mostly do what you want:

  # on "master" (or "next" or whatever), merge in PR 20:
  git hub merge 20

  # on pull/20, merge to "master":
  git hub merge
latest commit 47a567d18c
@wincent authored

My "dotfiles"

These should work reasonably well on current OS X and recent Red Hat-like Linuxes.


  • Sane Vim pasting via bracketed paste mode.
  • Write access to local clipboard from local and remote hosts, inside and outside of tmux.
  • Full mouse support (pane/split resizing, scrolling, text selection) in Vim and tmux.
  • Focus/lost events for Vim inside tmux.
  • Cursor shape toggles on entering Vim.
  • Italics in the terminal.
  • Bundles a (not-excessive) number of useful Vim plug-ins.


  • tmux 1.9a+.
  • Vim 7.4+ with Ruby and Python support (although there's a reasonable amount of feature detection in order to degrade gracefully).
  • Relatively recent Zsh; older, staler Bash config still available as a fallback.
  • Relatively recent Git.
  • Clipper for transparent access to the local system clipboard.
  • On OS X, iTerm2.
  • Python to perform setup via the included install command.



git clone --recursive git://

Note that if you're behind a firewall you may need to set up a temporary ~/.gitconfig with appropriate proxy configuration with a format such as:

    proxy = fwdproxy:8080


./install        # installs everything on the local machine
./install --help # info on installing specific roles, force-installing etc

This sets up a local Python environment using the bundled virtualenv, bootstraps Ansible, and then uses Ansible to copy the dotfiles and configure the machine.

As a fallback strategy, in case the install script fails, you can symlink the dotfiles by hand with a command like the following:

for DOTFILE in $(find roles/dotfiles/files -maxdepth 1 -name '.*' | tail -n +2); do
  ln -sf $PWD/$DOTFILE ~

Note: The ln -sf command will overwrite existing files, but will fail to overwrite existing directories.

General characteristics

  • For a long time I resisted the temptation to add a large number of aliases; I wanted to be able to sit down in front of any machine and be comfortable with the standard tools; there has been a little "feature creep" since then, but I feel things are still pretty much in control.
  • My first goal with my Zsh config was to reach feature parity with what I had with Bash, and then add a minimal number of bells and whistles.
  • For similar reasons, I've tried to keep my Vim config close to standard; it is relatively "pimped" out, but the core functionality is mostly unmodified.
  • I've resisted importing massive swathes of configuration provided by other people, or large libraries of code, preferring instead to understand, research and implement features on an as-needed basis.
Something went wrong with that request. Please try again.