Evil'de Vim'lere benzer davranışları nasıl geri alabilirim?


17

Kötülükteki varsayılan geri alma davranışı çok kaba tanelidir, çünkü ekleme moduna girme ve onu bir düzenleme işlemi olarak bırakma arasında gerçekleşen herhangi bir şeyi dikkate alır. Bir ekleme sırasında metnin bir paragrafını girip geri al işlemini yürüttüğünüzde paragrafın tamamı kaldırılır. Bunun aksine, Vim imleci metin girme dışında bir ekleme modunda her hareket ettirdiğinizde yeni bir geri alma birimi başlatır.

Kötülük, daha hassas bir geri alma geçmişi elde etmek için kullanılabilecek bir özelleştirme değişkenine sahiptir:

(setq evil-want-fine-undo t)

Bu ayarda, Evil, tıpkı Vim gibi, imleç ekleme modunda hareket ettirildiğinde yeni bir geri alma birimi başlatır. Bununla birlikte, bu ayar ayrıca değiştirme işleminin nasıl yapıldığını da karıştırır: kullanarak bir sözcüğü değiştirirseniz cw, orijinal sözcüğü geri yüklemek için iki kez geri almanız gerekir: bir kez yeni sözcüğü kaldırmak için ve bir kez de orijinal sözcüğü yeniden eklemek için. Bu Vim ile tutarsızdır ve pek mantıklı değildir çünkü değiştirme atomik olmalıdır.

Soru: Vim'in geri alma davranışını elde etmek için Kötülük ve geri almayı nasıl yapılandırabilirim?


Burada bir sorun oluşturun: bitbucket.org/lyro/evil/issues?status=new&status=open (Kötülük genellikle vimden sapmaları hata olarak kabul eder).
shosti

@shosti, haklısınız, ancak özelleştirme değişkeninin varlığı, mevcut davada bu kurala bir istisna yapmaya karar verdiklerini göstermektedir. Yine de bir hata dosyalayacağım. Bakalım ne olacak.
tmalsburg

Özelleştirme değişkeni aslında daha fazla Emacs benzeri geri alma davranışı elde etmek olduğunu düşünüyorum (Emacs, vim ile aynı şekilde atomik işlemler yapmaz).
shosti

Yanıtlar:


10

@Shosti, Evil'in Vim davranışından sapmayı hatalar olarak gördüğünü belirttiğinden, bir hata verdim ve Evil'in yazarlarından biri aşağıdakiler için yeni bir olası değer ekledi evil-want-fine-undo:

(setq evil-want-fine-undo 'fine)

Bu ayarla, imleci ekleme modunda hareket ettirirken yeni geri alma birimleri alırsınız, ancak değiştirme işlemleri bir adımda geri alınır. Anlayabildiğim kadarıyla bu Vim ile tutarlı. Ayrıntılar için buraya bakın.


2
Bu çözüm artık önerilmemektedir çünkü 'fineayar kullanımdan kaldırılmıştır.
tmalsburg

1

Değişken tanımına göre (bkz. C-h v evil-want-fine-undo) fineTutarsız davranış nedeniyle değer desteklenmemektedir.

Yazım hatalarını geri almak için geri almayı kullandığımdan veya belirtilen ayar benim ayırmamı yardımcı oldu.

(setq evil-want-fine-undo t) 

Eğer değiştirmek isterseniz ekleme modundan çıkmak gerekmez çünkü, org masa formülü düzenleme sorun geri alma hataları vardı *Edit Forumlas*ile C-'.


Güncelleme için teşekkürler. Bitbucket'teki sorunun yeniden açılmasını talep ettim.
tmalsburg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.