Il comportamento di annullamento predefinito in Evil è troppo grossolano perché considera tutto ciò che accade tra l'accesso alla modalità di inserimento e lasciarlo come un'operazione di modifica. Quando si inserisce un intero paragrafo di testo durante un inserimento e quindi si esegue l'annullamento, l'intero paragrafo viene rimosso. Al contrario, Vim avvia una nuova unità di annullamento ogni volta che si sposta il cursore in modalità di inserimento in modo diverso dall'immissione di testo.
Il male ha una variabile di personalizzazione che può essere utilizzata per ottenere una cronologia degli annullamenti più dettagliata:
(setq evil-want-fine-undo t)
Con questa impostazione, Evil avvia una nuova unità di annullamento quando il cursore viene spostato in modalità inserimento, proprio come fa Vim. Tuttavia, questa impostazione fa anche confusione con la gestione dell'operazione di sostituzione: se si sostituisce una parola utilizzando cw
, è necessario annullare due volte per ripristinare la parola originale: una volta per rimuovere la nuova parola e una volta per reinserire la parola originale. Questo non è coerente con Vim e non ha molto senso perché sostituire dovrebbe essere atomico.
La domanda: come posso configurare Evil e undo-tree per ottenere il comportamento di annullamento di Vim?