ponieważ zebrałem już 2 bliskie głosy, myślę, że należy to tutaj, ponieważ vim jest edytorem programisty.
flybywire
28
Zgadzam się, to jest związane z programowaniem i to jest prawdziwe pytanie.
DigitalRoss,
41
Ktoś tu chodzi i zaznacza każde pytanie Vima jako „należy do SU”, mimo że społeczność już dawno zdecydowała, że Vim należy do SO, ponieważ jest to narzędzie programistyczne.
Brian Carper,
@Brian: Czy masz link do dokumentu, w którym osiągnięto ten konsensus?
za dużo php
12
meta.stackexchange.com/questions/20251/... ale przypominam sobie, że kiedyś to się wydarzyło w zeszłym roku. Vim / Emacs są IDE. Co więcej, języki używane w plikach konfiguracyjnych dla obu są kompletnymi językami skryptowymi Turinga, więc sam proces konfigurowania Vima jest na początku programowaniem.
Chciałbym po prostu wyrzucić wtyczkę undoTree, super niesamowite na czasy, w których pozornie popsułeś się lawiną cofnięć i powtórzeń.
Jake Sellers
3
Jeśli czytam o vi, moje palce działają po prostu same. Polecenia vi nie działają przy przepełnieniu stosu. :-)
ciscogambo
2
Uwaga dla użytkowników komputerów Mac: Ctrl + r w terminalu Mac zepsuje ci dzień w vimie. Nie znam odpowiedniej kombinacji klawiszy w terminalu Mac, aby cofnąć, ale zdecydowanie NIE Ctrl + r!
tpartee
@tpartee Właśnie użyłem Ctrl + r w vimie pod aplikacją terminalową macOS - tutaj nie ma problemów.
Jase
3
Może @partner miał na myśli Cmd + rbałagan? Z pewnością robi coś dziwnego; ale Ctrl + rpo prostu działało dobrze dla mnie (Mac + tmux + vim)
dwanderson
133
Zobacz także :undolist, która oferuje wiele ścieżek w historii cofania. Jest to przydatne, jeśli przypadkowo wpiszesz coś po cofnięciu zbyt wiele.
Użyj :earlier/ :later. Aby powtórzyć wszystko, co musisz zrobić
later 9999999d
(zakładając, że najpierw edytowany plik co najwyżej 9999999 dni temu), albo, jeśli pamiętać różnicę między aktualnym stanem cofania i potrzebował jednego, użytkowania Nh, Nmlub Nsna godziny, minuty i sekundy odpowiednio. + :later N<CR><=> Ng+i :later Nfdo zapisu plików.
:laterpracował dla mnie w vi(nie vim - wyszukiwał „go” w google, ale wszystkie wyniki są dla „vim”), dzięki!
Luc
@Luc Prawie wszędzie tam, gdzie masz vipolecenie, jest to dowiązanie symboliczne do pliku wykonywalnego vim lub jego kopia. Jednak nie do końca wszędzie.
ZyX
@ZyX Chciałbym, żeby to była prawda. Używam vi tylko po tym, jak bash rzuci a vim: command not found. Następną rzeczą, którą robię, jest to, alias vim=viże piszę to automatycznie, ale mimo to jest to zwykła stara vi. Również redo (ctrl + r) działałoby poprawnie, gdyby vi był aliasem dla vima.
Luc
2
9999999d to 27395 lat temu. Zakładam, że funkcja cofania nie była wtedy zaimplementowana w vi. Możesz zaoszczędzić trochę wyczerpującego pisania i użyć rozsądnej liczby. 9999d odpowiada około 27 latom, 999d - 2,7 lat. Myślę, że w większości przypadków to wystarczy ...
<Undo> or *undo* *<Undo>* *u*
u Undo [count] changes. {Vi: only one level}
*:u* *:un* *:undo*
:u[ndo] Undo one change. {Vi: only one level}
*CTRL-R*
CTRL-R Redo [count] changes which were undone. {Vi: redraw screen}
*:red* *:redo* *redo*
:red[o] Redo one change which was undone. {Vi: no redo}
*U*
U Undo all latest changes on one line. {Vi: while not
moved off of it}
Zagłosowano, ponieważ pytanie dotyczy konkretnie vima, a nie Visual Studio.
John Von Neumann
3
@JohnVonNeumann Jest to związane z Vimem, a przynajmniej z Vimem, tylko w kontekście VS. W końcu to doprowadziło mnie do tego pytania. Karanie kogoś za dodanie trochę więcej informacji wydaje się nieco surowe i nieuzasadnione, bo nie sądzisz, nawet jeśli może nieco wykracza poza zakres PO?
Kjartan
2
Praktycznie rzecz biorąc, :undolistjest trudny w użyciu, a Vim :earlieri:later śledzenie zmian czas jest użyteczne tylko w przypadku poprawek kursu.
Biorąc to pod uwagę, korzystam z wtyczki, która łączy te funkcje w celu zapewnienia wizualnego drzewa możliwych do przeglądania cofnięć, zwanego „Gundo”.
Oczywiście jest to przydatne tylko wtedy, gdy potrzebujesz drobnoziarnistej poprawki lub nie jesteś pewien dokładnego stanu dokumentu, do którego chcesz wrócić. Zobacz: Gundo. Wyświetl stylowo swoje drzewo cofania Vima
Odpowiedzi:
Ctrl+r
źródło
Cmd + r
bałagan? Z pewnością robi coś dziwnego; aleCtrl + r
po prostu działało dobrze dla mnie (Mac + tmux + vim)Zobacz także
:undolist
, która oferuje wiele ścieżek w historii cofania. Jest to przydatne, jeśli przypadkowo wpiszesz coś po cofnięciu zbyt wiele.źródło
:undolist
i wpisz:undo 178
(powiedz), aby przewinąć do kroku 178.:undolist
?Użyj
:earlier
/:later
. Aby powtórzyć wszystko, co musisz zrobić(zakładając, że najpierw edytowany plik co najwyżej 9999999 dni temu), albo, jeśli pamiętać różnicę między aktualnym stanem cofania i potrzebował jednego, użytkowania
Nh
,Nm
lubNs
na godziny, minuty i sekundy odpowiednio. +:later N<CR>
<=>Ng+
i:later Nf
do zapisu plików.źródło
:later
pracował dla mnie wvi
(nie vim - wyszukiwał „go” w google, ale wszystkie wyniki są dla „vim”), dzięki!vi
polecenie, jest to dowiązanie symboliczne do pliku wykonywalnego vim lub jego kopia. Jednak nie do końca wszędzie.vim: command not found
. Następną rzeczą, którą robię, jest to,alias vim=vi
że piszę to automatycznie, ale mimo to jest to zwykła stara vi. Również redo (ctrl + r) działałoby poprawnie, gdyby vi był aliasem dla vima.Dokumentacja Vima
źródło
W trybie poleceń użyj Uklawisza do cofnięcia i Ctrl+ rdo powtórzenia. Zajrzyj na http://www.vim.org/htmldoc/undo.html .
źródło
Najpierw naciśnij Esc klawisz, aby wyjść z trybu edycji.
Następnie,
Aby cofnąć , użyj uklucza tyle razy, ile chcesz cofnąć.
Aby powtórzyć , użyj klawisza Ctrl+r
źródło
Zobacz część „cofnij” i „ponów” w dokumencie Vima .
: red [o] (Ponów jedną cofniętą zmianę) i {count} Ctrl+r (Ponów {liczba} zmian, które zostały cofnięte) są w porządku.
Ponadto : wcześniej {liczba} (przejdź do starszego stanu tekstu {liczba} razy) zawsze może zastąpić cofanie i ponawianie.
źródło
CTRL+r
„R” ma małe litery.
źródło
^r
i^R
, a Vim za tym podąża.^X
(gdzieX
może być dowolna litera).Używasz VsVim dla Visual Studio?
Natknąłem się na to podczas eksperymentowania z VsVim, który zapewnia powiązania dla poleceń Vima w Visual Studio .
Wiem o Ctrlrsamym Vimie, ale to szczególne wiązanie nie działa w VsVim (a przynajmniej nie w mojej konfiguracji?).
Co robi prac jest jednak komenda
:red
. Jest to trochę trudniejsze niż powyższe, ale nadal jest w porządku, gdy naprawdę potrzebujesz.źródło
Praktycznie rzecz biorąc,
:undolist
jest trudny w użyciu, a Vim:earlier
i:later
śledzenie zmian czas jest użyteczne tylko w przypadku poprawek kursu.Biorąc to pod uwagę, korzystam z wtyczki, która łączy te funkcje w celu zapewnienia wizualnego drzewa możliwych do przeglądania cofnięć, zwanego „Gundo”.
Oczywiście jest to przydatne tylko wtedy, gdy potrzebujesz drobnoziarnistej poprawki lub nie jesteś pewien dokładnego stanu dokumentu, do którego chcesz wrócić. Zobacz: Gundo. Wyświetl stylowo swoje drzewo cofania Vima
źródło