Leí la wiki y puse esto en mi vimrc:
autocmd FileType less,sass,yml,css,html,php,twig autocmd BufWritePre <buffer> :%s/\s\+$//e
Ahora el problema es cada vez que guardo &está roto: repite una mezcla de la última sustitución y la sustitución. Si, por ejemplo, lo hago :s/foo/bary luego guardo, &parece que sí :s/foo//. Me gustaría que lo hiciera :s/foo/bar/. ¿Cómo puedo restaurar esta funcionalidad?

Debería evitar el uso
:substitute, ya que actualmente no hay una manera fácil de guardar y restaurar la última cadena de sustitución; El:help function-undo-searchno ayuda aquí.La mayoría de los complementos (como se muestra en la página Wiki referenciada) también sufren este problema. Se usaría una solución alternativa
call setline(substitute(getline(lnum)), '\s\+$', '', '')en un bucle sobre todas las líneas, pero probablemente sea mucho más lento que el:substitute.fuente