Czy po wydaniu scroll-up
lub scroll-down
w emacsie istnieje szybki sposób, aby przywrócić punkt do poprzedniej pozycji (zakładając, że nie pamiętam, aby dodać go do znacznika)?
Alternatywnie, czy jest jakiś sposób (bez ingerencji w pierścień znaku), aby zmienić zachowanie przewijania, tak że przewijanie w górę, a następnie przewijanie w dół (lub odwrotnie) przywraca punkt do pierwotnej pozycji? (np. spraw, aby przewijanie przesunęło punkt dokładnie o x linii, gdzie x jest wysokością ekranu)
Jestem w trakcie przyzwyczajania się do emacsa i jest to jedna z najczęstszych sytuacji prowokujących przekleństwo: przewijam się, aby zobaczyć inną część mojego kodu, nie pamiętając o dodaniu mojej linii do pierścienia znaczników, a potem bolesne jest próbowanie aby przenieść linię kodu, nad którą pracowałem. W związku z tym, gdy proszę o rozwiązanie techniczne, chciałbym również dowiedzieć się, jak doświadczeni użytkownicy unikają tego problemu. Czy po prostu przyzwyczajasz się do zapamiętywania, dzielenia okna, rozglądania się lub korzystania z innego wzoru?
Dzięki
scroll-up-line
(czego używam z moim kółkiem przewijania) powodowanie, że kursor przesuwa się o jeden znak do przodu, gdy uderza on w górę lub w dół ekranu.(setq scroll-preserve-screen-position 'always)
. W przeciwnym razieC-v M-v
nie przywróci punktu początkowego (druga pozycja punktu jest widoczna na pierwszym ekranie, więc punkt nie przesuwa się).To, co według mnie działa dobrze, to używanie
goto-last-change.el
, które powoduje powrót do miejsca, w którym ostatnio dokonałeś edycji. Podoba mi się wiązanie:źródło
C-_ C-f C-_
(cofnij, przenieś, cofnij).W odpowiedzi na twoje pytanie dotyczące tego, jak unikam opisywanego problemu (szukanie gdzie indziej w kodzie, a następnie powrót do punktu, w którym pracowałem) ...
Zazwyczaj dzielę ekran, gdy muszę krótko szukać gdzie indziej. Następnie mogę wrócić do oryginalnego ekranu za pomocą
C-x o
, nieoświetlonyC-x 1
i wracam do normy.Używam także i-search do przodu i do tyłu, aby zlokalizować określony punkt w kodzie. Uważam, że jest to dość wydajny sposób poruszania się po kodzie, gdy wiem, czego szukam.
źródło
Jeśli przewijam tylko kilka linii z miejsca, w którym aktualnie się znajduję, mogę użyć tego do przewijania okna bez przesuwania punktu:
Jeśli przechodzę do zupełnie innej sekcji pliku (lub do zupełnie innego pliku), czasami używam,
breadcrumb
chociaż istnieje wiele innych pakietów, które robią podobne rzeczy.Jeśli muszę jednocześnie zobaczyć dwa obszary kodu, podzielę ramkę poziomo na dwa okna, a następnie skończę z drugim oknem.
Najczęściej jednak używam tylko dwóch ramek, z których jedna jest moją bieżącą ramką roboczą, a druga ramką referencyjną, używaną do przeskakiwania wokół tego samego lub innych plików.
źródło
C-l
.Pakiet przywracania punktów wykonuje dokładnie to, co opisano, po wyjęciu z pudełka.
Sprawdza, czy zestaw (konfigurowalnych) poleceń został wykonany (domyślnie zaznacza polecenia, przewija i przewija w górę / w dół), a następnie pozwala powrócić do poprzedniej pozycji punktu (kursora), naciskając
keyboard-quit
, zwykle związany z C-glub ESC.Uwaga: Jestem autorem tego pakietu.
źródło