W tym artykule jest napisane, że „Emacs ma ponawiać, ponieważ można cofać kierunek podczas cofania, a tym samym cofać cofanie”.
Co to znaczy? Jak użytkownik może „przerobić” za pomocą Emacsa?
W tym artykule jest napisane, że „Emacs ma ponawiać, ponieważ można cofać kierunek podczas cofania, a tym samym cofać cofanie”.
Co to znaczy? Jak użytkownik może „przerobić” za pomocą Emacsa?
Odpowiedzi:
Wersja skrócona: cofając cofanie. Jeśli cofniesz, a następnie wykonasz polecenie nieedytowane, takie jak C-f, następne cofnięcie cofnie cofnięcie, co spowoduje ponowne wykonanie.
Dłuższa wersja:
Możesz myśleć o cofnięciu operacji jako o stosie operacji. Jeśli wykonasz jakieś polecenie (nawet polecenie nawigacyjne, takie jak C-f) po sekwencji operacji cofania, wszystkie cofnięcia zostaną wypchnięte na stos operacji. Kolejne cofnięcie cofa ostatnie polecenie. Załóżmy, że masz sekwencję operacji, która wygląda następująco:
Teraz cofniesz. Cofa ostatnią akcję, co powoduje wyświetlenie następującej listy:
Jeśli w tym momencie zrobisz coś innego niż cofnięcie - powiedzmy, C-fstos operacji wygląda następująco:
Teraz, kiedy cofasz, pierwszą rzeczą, która jest cofana, jest cofanie. Wynikające z oryginalnego stosu (i stanu dokumentu):
Jeśli wykonasz polecenie modyfikujące, aby przerwać sekwencję cofania, polecenie to jest dodawane po cofnięciu, a zatem jest pierwszą rzeczą, którą należy później cofnąć. Przypuśćmy, że zamiast uderzania przesuwałeś się wstecz w „pasku” C-f. Wtedy byś miał
To dodawanie / ponowne dodawanie odbywa się w nieskończoność. Trochę się przyzwyczaja, ale tak naprawdę daje Emacsowi bardzo elastyczny i potężny mechanizm cofania / ponawiania.
źródło
Cofnąć: C-_
Aby powtórzyć po cofnięciu: C-g C-_
Wpisz wiele razy, C-_ aby powtórzyć to, co zostało cofnięte. C-_ Aby powtórzyć polecenie emacs wiele razy, wykonaj polecenie, a następnie wpisz, C-xza następnie wpisz wiele razy zklawisz, aby powtórzyć polecenie (ciekawe, jeśli chcesz wykonać makro wiele razy)
źródło
C-u
, na przykładC-u 8 *
(wstaw osiem * w miejscu, w którym znajduje się kursor). Możesz więc użyćC-u x C-_
do cofnięcia x kroków.C-x e
) możesz naciskaće
tyle razy, ile potrzebujesz, aby wykonać je ponownie.C-/
iC-x u
alternatywne cofanie przypisania klawiszy, co odpowiadaC-_
. Wolę,C-/
ponieważ łatwiej jest trafić.C-g C-_
„cofnie się po cofnięciu”, dotyczy to tylko pierwszego naciśnięcia kombinacji. Następnie powtórz swój klawisz cofania bezC-g
. Aby powtórzyć trzy razy zaraz po cofnięciu, wpiszC-g C-_ C-_ C-_
. JeśliC-g C-_ C-g C-_ C-g C-_
napiszesz, będziesz krążył w kółko, cofając ponawianie swoich cofnięć ...C-/
C-/
C-/
C-g
C-/
C-g
C-/
C-/
. Zauważ, żeC-g
się nie powtarza.C-g
C-/
C-g
C-/
C-/
Jeśli od ostatniego polecenia cofania naciśniesz dowolny klawisz (czy wpisujesz znaki, czy po prostu przesuwasz kursor), nie musisz pisać
C-g
przed następnym cofnięciem / ponownym.C-g
jest tylko bezpiecznym klawiszem do trafienia, który sam w sobie nie robi nic, ale liczy się jako klawisz cofania, który sygnalizuje koniec sekwencji cofania. Naciśnięcie innego polecenia, takiego jakC-f
też, działałoby; po prostu przesuwa kursor z miejsca, w którym go masz.Jeśli uderzyłeś
C-g
lub wykonałeś inne polecenie, kiedy nie chciałeś, a teraz cofasz się w złym kierunku, po prostu naciśnij,C-g
aby odwrócić kierunek. Będziesz musiał cofnąć całą drogę przez przypadkowe powtórzenia i cofnięcia, zanim dojdziesz do cofnięć, które chcesz, ale jeśli nadalC-/
będziesz naciskać , w końcu osiągniesz pożądany stan. W rzeczywistości każdy stan, w którym kiedykolwiek był bufor, jest osiągalny, jeśli uderzyszC-g
raz, a następnie naciskaszC-/
wystarczająco dużo razy.Alternatywne skróty
undo
, inne niżC-/
sąC-_
,C-x u
iM-x
undo
.Zobacz Cofnij w Podręczniku Emacsa, aby uzyskać więcej informacji na temat systemu cofania Emacsa.
źródło
Dla tych, którzy chcą mieć bardziej powszechną funkcję cofania / ponawiania, ktoś napisał
undo-tree.el
. Zapewnia wygląd cofania nie Emacsa, ale zapewnia dostęp do całego „drzewa” cofania historii.Lubię wbudowany system cofania Emacsa, ale uważam ten pakiet za bardzo intuicyjny.
Oto komentarz z samego pliku:
źródło
Strzeż się dziwnego cofania drzewa w celu ponownego wykonania !
Wiele popularnych „zestawów startowych” (preludium, purcell, spacemacs) jest dostarczanych w pakiecie z cofaniem drzewa. Większość (wszystkich?) Nawet włącza go automatycznie. Jak wspomniano, cofnij drzewo jest wygodnym sposobem na wizualizację i przejście przez drzewo cofania / ponawiania. Preludium daje nawet klawisz-akord (
uu
), a takżeC-x u
.Problem polega na tym: cofanie drzewo wydaje się zniszczyć domyślne Emacs i znany wiążący dla redo :
C-g C-/
.Zamiast tego możesz użyć tych symetrycznych klawiszy do cofania / ponawiania :
Są one przydatne, ponieważ czasami chcesz szybko powtórzyć bez otwierania wizualizatora.
źródło
Uważam, że jest to szczególnie
redo.el
przydatne do wykonywania „normalnych” operacji cofania / przywracania i zwykle wiążę to z CSz, a cofam z Cz, w następujący sposób:Wystarczy pobrać plik, umieścić go na ścieżce lisp i wkleić powyższe w swoim
.emacs
.źródło
Emacs 28 dodaje polecenie ponów (wywoływane
undo-redo
).Jeśli chcesz mieć bardziej typowe cofanie / ponawianie, można użyć następujących poleceń.
źródło
Jeśli chcesz ponownie wykonać ostatnią operację, wykonaj następujące czynności.
ESC
C + /
)źródło
Domyślnie ponawianie w Emacsie wymaga naciśnięcia Cg, a następnie cofnięcia.
Jednak możliwe jest użycie wbudowanego cofania Emacsa, aby zaimplementować polecenie ponawiania.
Pakiet cofnij-fu , wykorzystuje wbudowaną funkcję cofania Emacsa, aby ujawnić zarówno cofanie, jak i ponawianie.
źródło