Zbyt często popełniam błąd podczas pisania z niewłaściwym oknem (i zrobiłem to już kilka razy za pomocą uwierzytelniacza USB). W programach z włączoną dużą liczbą skrótów klawiszowych (Gmail, VLC, Vim) często ma to niezamierzoną konsekwencję wprowadzania niepożądanych modyfikacji.
Czasami mogę śledzić moje kroki i pamiętać, co wpisałem, aby naprawić wszelkie zmiany lub przywrócić ustawienia, które poprawiłem, jeśli wcześnie się złapię. Niestety nie zawsze tak jest.
W Vimie mogłem mieć coś tak niewinnego i widocznego jak zmiana linii tekstu, którą łatwo cofnąć. Albo mógłbym nieświadomie zmodyfikować coś, co nie jest tak łatwo zidentyfikowane. Jeśli przypadkowo wpisam sekwencję niechcianych poleceń w Vimie, jak mogę sprawdzić i cofnąć wszelkie zmiany lub zmiany ustawień?
:e!
zrobiłby to:e!
byłoby źle, jeśli nie zapisałeś od ostatniego poprawnego stanu, iu
może być niewystarczające, jeśli wpiszesz kilka rzeczy. (Jeślidate month
npu
.u
byciu częścią sekwencji, wykonując niektóre cofnięcia w środku.Odpowiedzi:
Odwołać się
aby zobaczyć, kiedy wprowadziłeś ostatni zestaw zmian. Jeśli jest napisane, że wprowadzono kilka zmian, np. „3 sekundy temu” i wiesz, że celowo zmieniłeś to, powiedzmy, minutę temu, a następnie wykonaj
przywrócić do pożądanego stanu. W przeciwnym razie, jeśli nie ma żadnych ostatnich zmian, nie musisz nic robić.
Dalsze odniesienia:
:help undo-tree
.źródło
Aby ponownie sformułować pytanie, szukasz sposobu, aby zobaczyć lub w inny sposób otrzymać powiadomienie o zmianach, które wprowadziłeś w pliku, a następnie użyć funkcji cofania. Może być inny sposób lub nawet wtyczki, które to obsługują. Ale wyjaśnię, czego używałem do tego samego celu.
Aby to zrobić, łączysz istniejącą funkcję vima. Na przykład możesz zdefiniować funkcję taką jak:
Możesz wtedy zadzwonić później, a nawet zmapować klawisz skrótu.
Spowoduje to otwarcie widoku różnic opartego na podzielonym oknie, który pokaże zmiany dokonane od ostatniego zapisu. Po zidentyfikowaniu dokonanych zmian możesz wyjść z tego widoku i użyć innych funkcji vima, takich jak cofanie i cofanie drzewa, itp., A nawet wtyczek, aby powrócić do poprzednich stanów.
Zdaję sobie sprawę, że nie jest to idealne, ponieważ musisz mieć pewien rodzaj przepływu pracy, aby to było przydatne. Ale to działa całkiem dobrze. A na plus, nie zmieniamy sposobu działania vima ani nie polegamy na niczym zewnętrznym.
Mam nadzieję, że uznasz to za przydatne. Zaadaptowałem to rozwiązanie jakiś czas temu z fragmentów znalezionych w Internecie, w tym vim Wikia. Właśnie tam należy się kredyt.
źródło
Wydaje mi się, że najprostszą odpowiedzią jest naciskanie,
u
aż cofniesz zmianę, którą chcesz zachować, a następnie naciśnijCtrl-R
.źródło
Podobnie jak @ superjer, naciskam, uaż czerwony
[+]
znacznik na mojej linii statusu zniknie.źródło
:e!
jest też dobrym rozwiązaniem; obecnie Vim zachowa nawet twoje „odrzucone” zmiany w historii cofania.:earlier 1f
. Te1f
środki „1 poprzedni zapisany stan”, więc będzie wrócić do poprzedniego raz plik został zapisany. Jeśli bufor zostanie zmodyfikowany, spowoduje to cofnięcie wszystkich modyfikacji. Jeśli bufor nie zostanie zmodyfikowany (tj. Jest obecnie w stanie zapisanym), przejdzie do poprzedniego zapisu pliku.