Ändern Sie die Cursorposition beim Scrollen in Emacs nicht

Ändern Sie die Cursorposition beim Scrollen in Emacs nicht

Gibt es eine Möglichkeit, das Emacsautomatische Verschieben der Textcursorposition (auch als Punkt bezeichnet) beim Scrollen zu verhindern? Durch dieses nervige Verhalten verliere ich ständig meine Position und Markierungen.

Ich habe den folgenden Vorschlag ohne Erfolg getestet:

(setq scroll-preserve-screen-position t
scroll-conservatively 0)

(Ich verwende Emacs24.2 auf Ubuntu und OS X.)

Antwort1

Ich denke, Sie möchten, dass sich Cursor (Punkt) und sichtbarer Bereich wie in anderen modernen Editoren verhalten notepad: geditMöglichkeit, den sichtbaren Bereich unabhängig von der Punktposition zu ändern und den sichtbaren Bereich nach dem Verschieben des Punkts sofort an die Punktposition zurückzubringen. Es emacsgibt jedoch eine andere Konzeption: Der sichtbare Bereich folgt immer der Punktposition und umgekehrt.

Siehe auchhttps://stackoverflow.com/questions/9616623/ctrl-up-down-style-scrolling-in-emacs

Die vorherige Antwort zeigt eine spezielle Redewendung: Wenn Sie den sichtbaren Bereich (mit dem Punkt zusammen) weit von der aktuellen Position weg bewegen und den Punkt dann genau an die vorherige Position zurückbringen möchten, sollten Sie sich angewöhnen, zu verwenden mark-ring. Es gibt immer einen Weg zurück mark ringzur aktuellen Arbeitsposition: Viele Befehle, wie isearch-forward, beginning-of-buffer, ace-jump-modespeichern die vorherige Position automatisch in mark ringund Sie sollten nicht C-<SPC> C-<SPC>vorher verwenden, sondern nur C-u C-<SPC>zum Zurückspringen. Scroll-Befehle, wie scroll-upoder mwheel-scroll, speichern die vorherige Position standardmäßig nicht automatisch, da dies zu viele überflüssige Markierungen erzeugen kann.

clone-indirect-bufferSie können an einigen Stellen Befehle oder view-buffer-other-windowfür die unabhängige Arbeit mit Puffern verwenden . Und verwenden Sie den Befehl recenter-top-bottom( C-l), um den Punkt kontinuierlich in der Mitte des sichtbaren Bereichs zu halten.

Antwort2

Ich weiß nicht, ob es eine Möglichkeit gibt, Emacs davon abzuhalten, Ihren Punkt beim Scrollen zu verschieben. Wenn Sie jedoch Ihren Standort speichern möchten, um später dorthin zurückzukehren, können Sie denRing markieren.

Das heißt, tippen Sie, C-<SPC> C-<SPC>um die aktuelle Punktposition auf den Markierungsring zu verschieben, und tippen Sie später, C-u C-<SPC>um den Punkt auf die vorherige Position im Markierungsring zu setzen.

Antwort3

Ich benutze das:

;;; scrollers - M-f, M-b
(global-set-key "\M-f" "\C-u1\C-v")
(global-set-key "\M-b" "\C-u1\M-v")

Antwort4

Folgendes funktioniert bei mir:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )

verwandte Informationen