The simple vims - code comments
After finding a bug in my custom written, bulk code comment / uncomment, vim function I decided to invest a little time to find a mature replacement that would remove my maintenance burden. In addition to removing my custom code I wanted a packaged solution, to make it easier to include across all of my vim installs.
After a little googling I found the ideal solution, the vim-commentary plugin. It ticks all my check boxes:
- mature enough all the obvious bugs should have been found
- receives attention when it needs it
- has a narrow, well defined, focus
- as a user it works the way I’d have approached it
- And while it’s not a selection criteria, Tim Pope writing it is a big plus
I use the Vundle package manager for
vim so installing commentary was quick and painless. I already have the vundle
boilerplate in my .vimrc
config file:
" set the runtime path to include Vundle and initialise
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" ... snip ... Lots of other plugins
call vundle#end() " required
So all I had to do was add the new Plugin
directive
" ... snip ...
Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-commentary'
" ... snip ...
and then re-source the configuration and install the new plugin
:source %
:PluginInstall
Once it’s installed using it is as easy as selecting the text you want
to comment out and typing gc
. You can also use gcc
(which can take
a count) to comment out the current line. To uncomment code repeat the
operation. Predictable enough that your muscle memory will learn it quickly.
If you want to change the comment style, for example puppet
code defaults to the horrible /* file { '/tmp/foo': */
format, you can
override the default by adding an autocmd
line to your .vimrc
autocmd FileType puppet setlocal commentstring=#\ %s
I replaced my own custom code with commentary a few weeks ago and it’s quickly become a great, intuitive, replacement. If you use vim for writing code and want a simple way to comment and uncomment blocks it’s an excellent choice.