avevo aggiunto la seguente funzione nel mio Vimrc per rimuovere gli spazi finali bianchi poco prima del salvataggioRimozione trailing spazio bianco solo per le linee modificate
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()
Funziona davvero bene. Tuttavia, in alcuni casi vorrei rimuovere gli spazi bianchi finali solo dalle righe che ho modificato. Questo per garantire che il mio output diff
abbia un aspetto sano come per alcuni file di codice legacy, quasi tutte le linee hanno degli spazi posteriori finali e non voglio sovraccaricare il mio revisore del codice con differenze non necessarie.
diff -b
non è una soluzione in questo momento in quanto ignora anche gli spazi bianchi da qualsiasi luogo in una linea e, talvolta, che il cambiamento è abbastanza importante da essere includere nel diff
uscita.
Quindi la mia domanda è: è possibile rimuovere gli spazi bianchi finali solo dalle righe che sono state modificate in questa sessione in un file in vim?
Ho una regola di evidenziazione che evidenzia (in modo molto fastidioso) lo spazio vuoto finale, quindi è molto facile per me vedere quale spazio deve essere rimosso; ma +1 perché sarebbe bello automatizzare la maggior parte di questo. – SingleNegationElimination
Perché no, come attività una tantum, spoglia tutti gli spazi bianchi finali di tutti i tuoi file legacy? –
@MatthewStrawbridge Fare ciò oscura chi ha scritto (o ha modificato per ultimo) le righe quando si esegue qualcosa come git annotate. (Può ancora essere trovato, ma richiede ulteriori passaggi.) –