Getting Vim to shut up

Written on 2020-07-18

One of the nice qualities about Vim is that it feels solid: it does not behave randomly and only reacts to user input. Unfortunately, it still blinks a little too much to my liking by default. Let's go over how it can be tamed and made a bit quieter.

First of all, an obvious annoyance to me is the message that appears when starting Vim without specifying a file. To get rid of it, I must be part of the string in the shortmess option.

Next, when using inccommand (which I recommend and is enabled by default in Neovim), the matches pop up by default in the preview window, which can be irritating. To fix this, just set inccommand=nosplit.

When using Neovim, the shape of the cursor changes depending on the mode that the user is in, making the indication on the last line redundant. To get rid of it, just set noshowmode.

Finally, when using completion, a lot of garbage gets printed on the last line. First of all, it's useless to be told what completion entry was selected as it is rather obvious. To get rid of this, add c to the shortmess. Another annoyance when using <C-n> completion are the messages like "Scanning tags.". Unfortunately, there is no option to disable them yet. The two options for now are either to remove those print statements (which are found in ins_compl_get_exp, located in edit.c) and compile a custom Vim or to prevent it from searching in tags and other buffers. To do so, set complete=., which will only let <C-n> complete with words from the current buffer.

In summary, here is a snippet that can be used to silence Vim a little more:

set inccommand=nosplit noshowmode shortmess+=Ic complete=.