Podczas używania u
lub CTL-R
cofania lub ponownej edycji w vimie wydaje mi się, że zmieniam fragmenty tekstu, a nie tylko ostatnie naciśnięcie klawisza.
Co decyduje o wielkości fragmentu uważanego za pojedynczą edycję?
źródło
Podczas używania u
lub CTL-R
cofania lub ponownej edycji w vimie wydaje mi się, że zmieniam fragmenty tekstu, a nie tylko ostatnie naciśnięcie klawisza.
Co decyduje o wielkości fragmentu uważanego za pojedynczą edycję?
Szukasz definicji undo-blocks
.
Od :h undo-blocks
:
Jedno polecenie cofnięcia zwykle cofa wpisane polecenie, bez względu na liczbę zmian wprowadzonych przez to polecenie. Ta sekwencja cofających się zmian tworzy blok cofania. Zatem jeśli wpisane klawisze wywołują funkcję, wszystkie polecenia w funkcji zostaną cofnięte razem.
Ten sam blok jest używany do redo
. Od :h redo
:
Ostatnie zmiany zostają zapamiętane. Możesz użyć powyższych poleceń cofania i ponawiania, aby przywrócić tekst do stanu sprzed każdej zmiany. Możesz także zastosować zmiany ponownie, odzyskując tekst przed cofnięciem.
CTRL-G u
w trybie wstawiania, co jest przydatne, jeśli masz makra trybu wstawiania.Modalne edycji Vim jest często postrzegana jako operator (np
c
,d
...) stosuje się do ruchu (npiw
,w
,}
, ...). Jako cudowny produkt uboczny Vim dostaje masywne cofnięcia. Tam, gdzie inni redaktorzy muszą zgadywać, aby przekształcić wiele małych cofnięć w bloki cofania, Vim robi to naturalnie. Innym efektem ubocznym jest to, że daje operator powtarzania.
(inaczej polecenie kropki).Twoje pytanie konkretnie dotyczy naciśnięć klawiszy, więc zakładam, że chcesz wiedzieć, jak cofać małe zmiany w trybie wstawiania. Odpowiedź brzmi: nie jest to „droga Vima”. „The Vim Way” oznacza, że będziesz w trybie wstawiania dla krótkich serii na raz. Oznacza to, że gdy popełniane są błędy w trybie wstawiania, często po prostu wychodzisz do trybu normalnego i poprawiasz tekst lub po prostu cofasz
u
i przepisujesz tekst.Czasami konieczne jest podzielenie bloku cofania w trybie wstawiania. Można tego dokonać
<c-g>u
w trybie wstawiania. Zobacz:h :undoj
i:h undo-blocks
więcej informacji.Aby uzyskać dalszą pomoc, sugeruję:
Istnieją również screencasty na ten temat:
źródło
Możesz myśleć o tym również w ten sposób: za każdym razem, gdy przejdziesz do trybu wstawiania, aby edytować tekst i naciśniesz Esc, utworzy to blok. Jeśli spróbujesz cofnąć ten blok, przejdziesz do tej samej pozycji przed przejściem do trybu wstawiania.
Dlatego możesz „zapisać” swoje zmiany po prostu od czasu do czasu wychodząc z trybu wstawiania: powiedzmy, że idziesz do trybu wstawiania i piszesz funkcję. Możesz kontynuować kodowanie i przejść do następnej funkcji, jednak czasem lepiej jest wrócić do normalnego trybu i ponownie przejść do trybu wstawiania. W ten sposób możesz skonstruować swój kod w prosty sposób, a jeśli musisz wrócić, możesz wiedzieć, w jakiej pozycji skończysz.
Uwaga: jeśli używasz strzałek do poruszania się, to tak jakbyś nacisnął Esc+ [ hjkl]
źródło