Automatic wrapping of Git commit messages using Vim

I just noticed that since changing my filetype setting in my ~/.vimrc from:

filetype indent on

To:

filetype indent plugin on

Vim is now automatically wrapping my Git commit messages to 72 columns. Nice.

For the curious, here is the output of :set when editing a Git commit message (I’ve stripped out some of the less interesting settings):

  autoindent          helplang=es         ignorecase          number              shiftwidth=2        textwidth=72        window=0
  autoread            hidden              incsearch           ruler               smartcase           ttyfast
  backspace=2         history=1000        list                scroll=25           smarttab            ttymouse=xterm
  expandtab           hlsearch            modelines=0         scrolloff=3         tabstop=2           wildmenu
  filetype=gitcommit
  includeexpr=substitute(v:fname,'^[^/]\+/','','')
  keywordprg=git --git-dir='/Users/wincent/trabajo/leopard/WOPublic/src/.git' show
  path=~/trabajo/leopard/WOPublic/src/.git,~/trabajo/leopard/WOPublic/src,

The interesting settings are evidently:

  • filetype=gitcommit

Evidently it’s picked up that the filename being edited is COMMIT_EDITMSG and that triggers the custom behaviour.

  • textwidth=72

Commit messages should be nice and narrow so that they’re easy to read, will display well on narrow terminals, and will survive transmission by email (even with a few levels of quoting).

  • keywordprg=git --git-dir='/Users/wincent/trabajo/leopard/WOPublic/src/.git' show

As described in :h keywordprg, hitting K will automatically look up the word under the cursor using the specified program — in this case git show. Not yet really sure why you’d want to do this nor how you would use it.

  • path=~/trabajo/leopard/WOPublic/src/.git,~/trabajo/leopard/WOPublic/src,

Set up the search path for commands like gf (edit the filename under the cursor).