I first want to say that I’m not the first to discover this. But I
recently added a modification to what I had in my
.vimrc that has
removed some small frustration.
.vimrc, I remove trailing whitespace on file save, or writing
the buffer in Vim terms, using the
autocmd feature. To accomplish
this, I have the following lines in my
augroup eventtypemappings autocmd! autocmd BufWrite * execute "normal! mz" | keeppatterns %s/\v\s+$//e | normal `z augroup END
The item that I added that I was originally unaware of was
keeppatterns. It executes the command that follows without adding
anything to the search history.
Without this additional command, every time I wrote a file, the most
recent search would be set to
\v\s+$. This was most annoying when I
would be going through several files, searching for the same text in all
The first and last parts of the command deal with setting a mark (I
z for this) and going back to the mark after the
substitution. Without those, you will often find your cursor moving to
new locations upon writing the buffer. The first normal has to be
wrapped into an
execute "normal", otherwise the rest of the characters
would simply be read as keys to be pressed in the normal command.
augroup command helps group autocommands. The
deletes out any old autocommands. This prevents the autocommands from
being defined twice, which can happen if you source your
You can always view my current dotfiles here.