A tiny Vim plugin for interactive Git rebasing

One of Git’s killer features is interactive rebase. After choosing a range of commits and rebasing them interactively with

git rebase -i HEAD~10

you can re-order, edit, drop and squash commits, simply by fiddling with the list of commits pasted into your favorite editor. Some actions are easily done in Vim (e.g. deleting or moving lines), others require writing whatever you intend to do with the commit. Because I squash a lot, I became tired of typing ^cws over and over again and finally sat down to write this stupid little filetype plugin:

function RebaseActionToggle()
    let line = getline(".")
    let result = matchstr(line, "^\\a")
    let transitions = {'p': 'squash', 's': 'edit', 'e': 'fixup', 'f': 'pick'}
    execute "normal! ^cw" . transitions[result]
endfunction

noremap <Cr> :call RebaseActionToggle()<Cr>

If you save it as gitrebase.vim in .vim/after/ftplugin, you can cycle through the different rebase actions by pressing Enter:

Have fun with that.