había añadido la siguiente función en mi .vimrc para la eliminación de espacios finales blancos antes de grabarExtracción espacios en blanco finales sólo para líneas editadas
fun! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
autocmd BufWritePre *.h :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.cpp :call <SID>StripTrailingWhitespaces()
autocmd BufWritePre *.c :call <SID>StripTrailingWhitespaces()
Funciona muy bien. Sin embargo, en ciertos casos, me gustaría eliminar los espacios blancos finales solo de las líneas que he editado. Esto es para asegurar que mi salida diff
se vea cuerda ya que para ciertos archivos de código heredados casi todas las líneas tienen espacios retrospectivos y no quiero cargar mi revisor de código con diferencias innecesarias.
diff -b
no es una solución en este momento ya que también ignora los espacios en blanco desde cualquier lugar en una línea y, a veces ese cambio es lo suficientemente importante como para incluirse en la salida diff
.
Así que mi pregunta es: ¿es posible quitar los espacios en blanco al final de solo las líneas que se han editado en esta sesión en un archivo en vim?
Tengo una regla de resaltado que destaca (de una manera muy molesta) los espacios en blanco al final, por lo que es muy fácil para mí ver qué espacio debe eliminarse; pero +1 porque sería bueno automatizar la mayor parte de eso. – SingleNegationElimination
¿Por qué no, como una tarea única, quita todos los espacios en blanco finales de todos tus archivos heredados? –
@MatthewStrawbridge Hacer eso oscurece quién escribió (o cambió por última vez) las líneas cuando ejecuta algo como git annotate. (Todavía se puede encontrar, pero lleva pasos adicionales.) –