Alberto Grespan

Debugging your vimrc

November 2, 2014

tl;dr this is a short guide on how to debug your .vimrc and hopefully it will help you find what’s making Vim slower or inconsistent.

A few days ago I added a bunch of new settings to my .vimrc that made my motion sluggish. This was happening in MacVim and in Vim and it was making me mad because apart from being slow, Vim was using a lot of CPU and with large files it was unbearable. After being fed up with this I hopped on IRC and joined the #vim channel to ask knowledgeable people how can I debug my Vim configuration. A kind user named watabou (I believe) first pointed me to Bisectly.

Bisectly is a plugin-manager-agnostic fault-localisation tool for finding which Vim plugin is causing you nose-bleeds.

I followed the documentation on the file and did multiple runs of Bisectly but found no apparent problems with the plugins I had installed… I asked again in the IRC channel and the same user (watabou) told me to put :finish in the middle of the configuration and explain a bit what to do.

Let me explain it briefly:

:finish works just like a git bisect but in a manual way. e.g. It deactivates the latter half or part of the .vimrc file to detect if the problem is in the first half or the second half of that file. After :finish is added to the middle or any part of the .vimrc file open Vim and test if the problem vanished, if it doesn’t we need to put the :finish instruction on the first or second half of the half (the first 25% or the last 25% of it) depending on where the problem was initially located. Keep doing this until the error “vanishes” by deactivation. With that hint in mind the “bug” should be between the last two sections bisected. Repeat this procedure between that section until the “bug” is completely localized, remove that setting or do whatever you want and that’s it…

In my case this sluggishness was caused by two options options, relativenumber and cursorline. This is probably because using super fast keyboard repeat and repaint doesn’t get along well. After removing those options Vim was super fast again.

Hope this super short post helps you figure out how to debug your .vimrc.

Thanks for reading!