Я добавил следующую функцию в мой .vimrc для удаления конечных пробелов непосредственно перед сохранением
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()
Это работает очень хорошо. Однако в некоторых случаях я хотел бы удалить конечные пробелы только из строк, которые я редактировал. Это делается для того, чтобы мой вывод diff
выглядел разумным, так как для некоторых устаревших файлов кода почти все строки имеют задние пространства, и я не хочу обременять мой обозреватель кода ненужным различием.
diff -b
не является решением прямо сейчас, так как он также игнорирует пробелы из любой точки в строке, и иногда это изменение достаточно важно для включения в вывод diff
.
Итак, мой вопрос: можно ли отделять пробельные пробелы только от строк, которые были отредактированы в этом сеансе в файле в vim?