Perilaku default undo di Evil terlalu kasar karena menganggap apa pun yang terjadi antara memasuki mode insert dan membiarkannya sebagai operasi edit. Saat Anda memasukkan seluruh paragraf teks selama satu sisipan dan kemudian menjalankan undo, seluruh paragraf dihapus. Berbeda dengan itu, Vim memulai unit undo baru setiap kali Anda memindahkan kursor dalam mode sisipan dengan cara selain memasukkan teks.
Evil memiliki variabel kustomisasi yang dapat digunakan untuk mendapatkan riwayat undo berbutir halus:
(setq evil-want-fine-undo t)
Dengan pengaturan ini, Evil memulai unit undo baru ketika kursor dipindahkan dalam mode insert, sama seperti Vim. Namun, pengaturan ini juga kacau dengan bagaimana operasi penggantian ditangani: jika Anda mengganti kata menggunakan cw
, Anda harus membatalkan dua kali untuk mengembalikan kata asli: sekali untuk menghapus kata baru dan sekali lagi untuk memasukkan kembali kata aslinya. Ini tidak konsisten dengan Vim dan tidak masuk akal karena ganti harus atom.
Pertanyaannya: Bagaimana saya bisa mengkonfigurasi Evil dan undo-tree untuk mendapatkan perilaku undo Vim?