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?
sumber
Jawaban:
Karena @shosti menunjukkan bahwa Evil menganggap penyimpangan dari perilaku Vim sebagai bug, saya mengajukan bug dan salah satu penulis Evil menambahkan nilai baru yang mungkin untuk
evil-want-fine-undo
:Dengan pengaturan ini, Anda mendapatkan unit undo baru saat memindahkan kursor dalam mode insert, tetapi operasi penggantian dibatalkan dalam satu langkah. Sejauh yang saya tahu ini konsisten dengan Vim. Lihat di sini untuk detailnya.
sumber
'fine
pengaturannya sudah usang.Menurut deskripsi variabel (lihat
C-h v evil-want-fine-undo
) nilaifine
tidak didukung lagi karena perilaku yang tidak konsisten.Karena saya menggunakan undo to undo typos atau pengaturan yang disebutkan membantu membagikan saya.
Aku punya kesalahan kehancuran kesulitan dalam org-tabel rumus editing, karena Anda tidak harus meninggalkan modus insert jika Anda ingin mengubah ke
*Edit Forumlas*
denganC-'
.sumber