Czy kursor może wrócić do poprzedniej pozycji?

24

Czy mogę zmusić kursor w buforze do powrotu do ostatniej pozycji? (najlepiej bez zaznaczania poprzedniej pozycji)

Na przykład Ca przeskakuje na początek bieżącej linii, czy mogę skoczyć z powrotem do poprzedniej linii?

Na przykład, gdy Cx Cf otwiera plik w innym katalogu, chcę skoczyć z powrotem do poprzedniej pozycji w nazwie ścieżki.

Dzięki.

Tim
źródło
Czy C-x xktóre biegi exchange-point-and-markwystarczą? Emacs nie przechowuje wszystkich ruchów kursora, tylko te, które specjalnie mu to nakazałeś. Dodawanie i usuwanie znaków to jeden ze sposobów przechowywania historii ruchów kursora. emacswiki.org/emacs/MarkCommands - oto dobra dyskusja na ten temat.
wvxvw
1
C-x xjest niezdefiniowany. M-x exchange-point-and-mark: brak znaku w tym buforze.
Tim
@Tim It Is C-x C-x. Musisz także najpierw oznaczyć ten znak, aby zadziałał. Aby wyraźnie oznaczyć znak, robisz C-SPC. Aby wrócić do poprzedniego znaku, musisz C-u C-SPC.
Kaushal Modi
Tak, tak, przepraszam, było C-x C-x. C-x xto moje własne zobowiązanie.
wvxvw
1
Nie jestem pewien, czy jest to duplikat, ale emacs.stackexchange.com/q/3421/454 może być przydatny.
phils,

Odpowiedzi:

30

Oto kilka powiązań związanych ze znakami, które mogą ci pomóc:

  • C-SPC- ustaw znacznik i aktywuj region (związany z set-mark-command)
  • C-SPC C-SPC - ustaw znacznik (aktywuje, a następnie dezaktywuje region)
  • C-x C-x - przywiązany do exchange-point-and-mark
  • C-u C-SPC - przejście do poprzedniego znaku

Sprawdź dokumentację Mark, aby lepiej zrozumieć ten temat.

Kaushal Modi
źródło
9
Zauważ, że polecenia, które mogą przesunąć kursor w pewną dowolną (ale potencjalnie dużą) odległość od miejsca, w którym byłeś (zwykle) automatycznie najpierw nacisną znacznik. Dzięki temu możesz często wrócić do miejsca, w którym byłeś wcześniej, korzystając z singla C-u C-SPC.
phils,
Ze counsel-mark-ringjest to również możliwe, aby wymienić wszystkie znaki i przejdź je z kursorami, uzyskanie podglądu w czasie rzeczywistym w buforze.
Arialdo Martini
1

Możesz użyć `Rejestry '.

Z pliku informacyjnego emacsa

13.1 Zapisywanie pozycji w rejestrach

C-x r <SPC> R' Record the position of point and the current buffer in register R (punkt do rejestracji ”).

C-x r j R' Jump to the position and buffer saved in register R (Jump-to-Register ').

Wpisanie C-x r <SPC>' (point-to-register '), po którym następuje znak `R', zapisuje zarówno pozycję point, jak i bieżący bufor w rejestrze R. Rejestr zachowuje tę informację, dopóki nie zapiszesz w niej czegoś innego.

Polecenie „Cx rj R” przełącza się na bufor zapisany w rejestrze R i przesuwa punkt do zapisanej pozycji. Zawartość rejestru nie ulega zmianie, więc możesz przeskoczyć do zapisanej pozycji dowolną liczbę razy.

Jeśli używasz C-x r j' to go to a saved position, but the buffer it was saved from has been killed,Cx rj 'próbuje ponownie utworzyć bufor, odwiedzając ten sam plik. Oczywiście działa to tylko w przypadku buforów, które odwiedzały pliki.

Joe
źródło