The Changelog

Open Source moves fast. Keep up.

Introducing dispatch.vim — the asynchronous build and test dispatcher #

Tim Pope‘s dispatch.vim allows you to leverage the power of Vim and it’s compiler plugins without being bound by synchronicity.

From the readme:

Kick off builds and test suites using one of several asynchronous adapters (including tmux, screen, iTerm, Windows, and a headless mode), and when the job completes, errors will be loaded and parsed automatically.

If that doesn’t excite you, then perhaps this video will. Fellow Changelogger, Adam Jahnke said, “I love how he timed the tests to the drum beat.”

Check out the source to dispatch.vim for usage and installation and make sure you share your rating it at

Discuss on Hacker News.

vitality.vim restores focus events to terminal Vim #

Steve Losh, Vim extraordinaire and creator of extravagant zsh prompts has released vitality.vim, a plugin that brings back focus events to terminal Vim. Focus events are vital if you want to save buffers on focus change, for instance:

" Save when losing focus
au FocusLost * :silent! wall

Steve has plenty of Vim goodies under his GitHub account and his dotfiles are a treasure trove, especially his .vimrc. Be sure to check out clam, his plugin for bringing the shell into Vim.

vimux – Simple, extensible vim integration with tmux #

You may recall Josh gushing about tslime on Episode 0.7.3. While tslime makes it easy to send input from Vim to a tmux session, Ben Mills wanted a bit more, so he created Vimux. Vimux gives you a tmux pane in which to execute commands, all without losing focus in vim.


Commands can easily be set up in your .vimrc to do common tasks:

" Prompt for a command to run
map rp :PromptVimTmuxCommand

" Run last command executed by RunVimTmuxCommand
map rl :RunLastVimTmuxCommand

" Inspect runner pane
map ri :InspectVimTmuxRunner

" Close all other tmux panes in current window
map rx :CloseVimTmuxPanes

" Interrupt any command running in the runner pane
map rs :InterruptVimTmuxRunner

Check out Ben’s introductory blog post for background and how they’re using Vim and tmux at Braintree (which I highly recommend for payment processing by the way).

vim-smartinput – Smarter punctuation pairs in Vim #

If, like me, you came to Vim from TextMate, you may miss having certain punctuation pairs closed for you automatically. (This is especially true in Markdown, where you write a lot of [], (), and ““).

Kana Natsuno aims to help you close those sets without getting in the way with smartinput, which comes with Drew Neil’s endorsement:

Check out the docs online or use :help smartinput once installed.

Episode 0.7.7 – Solarized and Linux on the desktop with Ethan Schoonover

Wynn sat down with Ethan Schoonover, creator of Solarized to talk about the science and design behind the wildly popular color scheme as well as his love for Arch Linux. Items mentioned in the show: Ethan Schoonover is a freelance designer, creator of Solarized. Solarized is a sixteen color palette (eight monotones, eight accent colors) […]

Vimdown – Create great looking READMEs from your .vimrc using Markdown #

On Episode 0.7.3 we extolled the virtues of rolling your own dotfiles, especially for your Vim setup. If you’re sharing those dotfiles on GitHub, Jeff Buttars has created Vimdown, a Python-based command line tool that will process Markdown in your .vimrc comments and output a Markdown file with your Vim settings in code fences. The following snippet from Jeff’s .vimrc:

" Call infect to get the bundle handling started.
call pathogen#infect()
   " infect our locally tracked pkgs
call pathogen#infect('~/.vim/pkgs')
" Brief help on Bundle commands  
" :BundleList          - list configured bundles
" :BundleInstall(!)    - install(update) bundles
" :BundleSearch(!) foo - search(or refresh cache first) for foo
" :BundleClean(!)      - confirm(or auto-approve) removal of unused
" see :h vundle for more details or wiki for FAQ
" *NOTE*: comments after Bundle command are not allowed..
" [Vundle]( Configuration
" Add vundle to our runtime path (rtp) and start vundle
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

… becomes:

Call infect to get the bundle handling started.

call pathogen#infect()

Brief help on Bundle commands  
:BundleList          - list configured bundles
:BundleInstall(!)    - install(update) bundles
:BundleSearch(!) foo - search(or refresh cache first) for foo
:BundleClean(!)      - confirm(or auto-approve) removal of unused

see :h vundle for more details or wiki for FAQ
*NOTE*: comments after Bundle command are not allowed..

[Vundle]( Configuration
Add vundle to our runtime path (rtp) and start vundle

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

Vimdown source is on GitHub, along with his own example Vim setup, complete with Vimdown-based README.


#73: Tmux with Brian Hogan and Josh Clayton

Wynn sat down with Brian Hogan and Josh Clayton to talk about tmux, dotfiles, and the joys of text mode. Items mentioned in the show: Brian Hogan speaker, trainer, and author of _Tmux: Productive, Mouse Free development, out now from PragProg. Josh Clayton is a developer at Thoughtbot. Factory Girl – fixture replacement for Ruby. […]

Yank Ring – yank history manager for Vim #

Nice plugin to manage your “yank” history in Vim, like a clipboard history of sorts. Items get added to your yank ring as you yank, delete, and change text:

    yy - Adds the current line to the yankring.
    dd - Adds the current line to the yankring and deletes it.
   5yw - Adds 5 words to the yankring.
  "ade - Deletes the word, and puts it into both the yankring and the "a register.
    cw - Changes the word and stores the previous value in the yankring.
10"zyy - Places 10 lines into both the yankring and the "z register.
 :1,4YRYankRange   - Similar to 1,4y
 :3,$YRDeleteRange  - Similar to 3,$d

You can invoke the Yank Ring window with :YRShow to browse your history visually.

Yank Ring in action

Check out the README for detailed usage.

vim-pasta – smarter, context aware indented pasting for Vim #

Marcin Kulik has released vim-pasta, a plugin for Vim that looks at the destination context to determine the indentation level for pasted text. Consider a paste with the cursor on line 1 of the following code block:

if i_were_president
<paste would land here>
  <when you really wanted it here>

Vim-pasta drops the text at the correct indentation level, in this case nested inside the if. Also, vim-pasta preserves indentation within the pasted code, preserving the format of blocks like this example:

obj = {
       a: 1,
       b: 2,
     foo: 3,
  barbaz: 4

Pasta is disabled by default for Python, CoffeeScript, and Markdown since the destination indentation level can’t easily be guessed for these languages. You can configure how vim-pasta handles other languages via its black and white lists:

let g:pasta_disabled_filetypes = ['python', 'coffee', 'yaml']
let g:pasta_enabled_filetypes = ['ruby', 'javascript', 'css', 'sh']

See the README for advanced usage.

ctrlp – Fuzzy file, buffer, mru and tag finder for Vim #

One of the biggest pain points for folks like me that switched to Vim from TextMate has been a good way to find and open files within a project. The Command-T plugin has kept me mostly happy, even though it requires running Vim compiled with Ruby support.

This weekend at Jesse’s recommendation, I tried ctrlp.vim, a fuzzy file, buffer, Most Recently Used (MRU), and tag finder written in pure Vimscript.

Installation with Janus couldn’t be simpler, just add the line to your ~/.janus.rake:

vim_plugin_task "ctrlp", ""

and install with

rake ctrlp

Once you’ve installed the plugin and reloaded Vim, you can invoke with <c-p> or :CtrlP. Just type your search query and watch how fast you can find and open files in your project. See the README for details on changing key mappings, using RegEx-based searches, and advanced usage.


Episode 0.5.6 – Vim with Drew Neil, Tim Pope, and Yehuda Katz

Wynn sat down with three Vim users and experts to talk about tips and tricks for using and pimping the popular text editor. Items mentioned in the show: Vim seeks to provide the power of Unix’s Vi Drew Neil hosts VimCasts Tim Pope has created numerout Vim plugins Yehuda Katz from SproutCore, Rails, and jQuery […]

vimgolf: The fewest keystrokes wins – in Vim #

Vim geeks take pride in solving problems in the fewest possible keystrokes, regardless of how cryptic the solution might be. With VimGolf from Ilya Grigorik, they can now compete for bragging rights in a golf-like game where the fewest strokes wins.

Wanna play? Just sign up at and install the CLI client:

$ gem install vimgolf
$ vimgolf setup
$ vimgolf put [challenge ID]

The rules are simple. Challenges include a start file and end file and it’s up to you to submit the shortest solution possible. Currently solutions are scored on simple file byte size, but future enhancements may add bonus points for use of key shortcuts and other advanced Vim features.


[Source on GitHub] [Play online]

vmail – Check your Gmail from within vim #

When I said I loved the command line, I wasn’t kidding. Therefore, of course, when I need to edit text files, I use vim. It’s just the right choice.

So it’s with a small amount of pain that I show you this interesting little project today. A common criticism that text editor (vim) fans throw in the face of operating system fans (emacs) is that a text editor should simply edit text. vmail, by Daniel Choi, lets you check your email from within vim. Here’s a (slightly outdated) screenshot:


How cool is that? Like I said, I’m slightly torn, but it’s still pretty freaking cool.

Installing vmail is pretty easy. Just

$ gem install vmail

As always, this means you need Ruby. To configure vmail, you need to make a .vmailrc file in your home directory. It should look something like this:

password: password
name: Daniel Choi
signature: |
  Sent from vmail.

If you leave the password part out, it’ll just prompt you for your password when you start vmail. Doing that, by the way, is easy:

$ vmail

You can also pass in arguments to vmail: they let you filter via either a label, or search terms:

$ vmail mailing-lists
$ vmail from

There are approximately one billion options that are supported by vmail, so if you’re interested, you can check out the project homepage to learn everything you need to know.

[GitHub] [README] [Homepage]

sparkup: A parser for a condensed HTML format #

Sparkup is just plain cool. You can write HTML in a CSS-like syntax, and have Sparkup handle the expansion to full HTML code. In short, Sparkup lets you write HTML code superfast!

Sparkup is written in Python, and requires Python 2.5 or newer (2.5 is preinstalled in Mac OS X Leopard). Sparkup also offers integration for common text editors. Support for VIM and TextMate are currently included.

Sparkup was written by Rico Sta. Cruz and was inspired by Zen Coding of Vadim Makeev. For those who may be familiar with Zen HTML, the syntax is forward-compatible with Sparkup (anything that Zen HTML can parse, Sparkup can too).

Usage and Installation

Download Sparkup from Github – you can download the latest version here.


Simply double-click on the Sparkup.tmbundle package in Finder to install the bundle.

In TextMate, open an HTML file and type in something like …

#header > h1

Then, press Ctrl + E. Pressing Tab after the snippet is expanded will cycle through all your newly created empty elements.


Copy the contents of vim/ftplugin/ to your ~/.vim/ftplugin directory.

// Assuming your current dir is sparkup/vim/
$ cp -R ftplugin ~/.vim/

Command-line and others

Put Sparkup in your $PATH somewhere and then invoke it by typing:

echo "(input here)" | sparkup

… or this for a list of commands.

sparkup --help


Check out the ZenCodingNetBeansPlugin.

Superfast HTML prototyping

This …

ul.feature-list > li*5 > h2 + p + a.button{Learn More}

Expands to this …

<ul class="feature-list">
        <a href="" class="button">Learn More</a>
        <a href="" class="button">Learn More</a>
        <a href="" class="button">Learn More</a>
        <a href="" class="button">Learn More</a>
        <a href="" class="button">Learn More</a>

Take a peek at the readme for more details.

What about Haml, Jade, Slim, or … ?

Well, as it is right now, the project is only catering to the HTML market, but hopefully one of you fine folks out there will fork it and get to work.

Check out the Codes and Video Demo

[Source on GitHub] & [Video Demo]

WatchWednesday for 20100929

It’s Wednesday again, time for us to serve up another quick list of projects to watch on GitHub. These are projects you might have missed or should could keep an eye on. Heroku::Autoscale David Dollar makes automatically scaling your Heroku dynos a snap with this gem. Simply add the gem to your Gemfile gem ‘heroku-autoscale’ […]