Jak mogę cofnąć zachowanie w Evil podobne do Vima?

17

Domyślne zachowanie cofania w Evil jest zbyt gruboziarniste, ponieważ bierze pod uwagę wszystko, co dzieje się między przejściem do trybu wstawiania a pozostawieniem go jako jednej operacji edycji. Po wprowadzeniu całego akapitu tekstu podczas jednej wstawki, a następnie wykonaniu cofnięcia, cały akapit jest usuwany. W przeciwieństwie do tego, Vim uruchamia nową jednostkę cofania za każdym razem, gdy przesuwasz kursor w trybie wstawiania w inny sposób niż wprowadzanie tekstu.

Zło ma zmienną dostosowywania, której można użyć, aby uzyskać bardziej szczegółową historię cofania:

(setq evil-want-fine-undo t)

Przy tym ustawieniu Zło uruchamia nową jednostkę cofania, gdy kursor jest przesuwany w trybie wstawiania, podobnie jak robi to Vim. Jednak to ustawienie ma również związek z tym, jak obsługiwana jest operacja zamiany: jeśli zastępujesz słowo przy użyciu cw, musisz cofnąć dwa razy, aby przywrócić oryginalne słowo: raz, aby usunąć nowe słowo, a raz, aby ponownie wstawić oryginalne słowo. Jest to niespójne z Vimem i nie ma większego sensu, ponieważ zamiana powinna być atomowa.

Pytanie: Jak mogę skonfigurować Zło i cofnąć drzewko, aby uzyskać zachowanie cofania Vima?

Tmalsburg
źródło
Zgłoś problem tutaj: bitbucket.org/lyro/evil/issues?status=new&status=open (Zło ogólnie uważa rozbieżności w vimie za błędy).
shosti
@shosti, masz rację, ale istnienie zmiennej dostosowywania sugeruje, że zdecydowali się zrobić wyjątek od tej reguły w niniejszej sprawie. Mimo to wyślę błąd. Zobaczmy co się stanie.
tmalsburg,
Myślę, że zmienna dostosowywania ma w rzeczywistości uzyskać więcej działań cofania podobnych do Emacsa (Emacs nie wykonuje operacji atomowych w taki sam sposób jak vim).
shosti
Oto nowy numer: bitbucket.org/lyro/evil/issue/444/…
tmalsburg

Odpowiedzi:

10

Ponieważ @shosti wskazał, że Zło uważa odstępstwo od zachowania Vima za błędy, zgłosiłem błąd, a jeden z autorów Zła dodał nową możliwą wartość dla evil-want-fine-undo:

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

Przy tym ustawieniu otrzymujesz nowe jednostki cofania podczas przesuwania kursora w trybie wstawiania, ale operacje zastępowania są cofane w jednym kroku. O ile mogę stwierdzić, jest to zgodne z Vimem. Zobacz tutaj, aby uzyskać szczegółowe informacje.

Tmalsburg
źródło
2
To rozwiązanie nie jest już zalecane, ponieważ 'fineustawienie zostało wycofane.
tmalsburg
1

Zgodnie z opisem zmiennej (patrz C-h v evil-want-fine-undo) wartość finenie jest już obsługiwana z powodu niespójnego zachowania.

Kiedy używam cofania do cofania literówek lub wspomniane ustawienie pomogło mojemu przydziałowi.

(setq evil-want-fine-undo t) 

Miałem problemy Cofanie błędów w edycji formuły org stołu, ponieważ nie trzeba wychodzić z trybu edycji, jeśli chcesz zmienić *Edit Forumlas*z C-'.

Jörn Reimerdes
źródło
Dziękuję za aktualizację. Poprosiłem o ponowne otwarcie problemu dotyczącego Bitbucket.
tmalsburg