Gibt es eine Möglichkeit, das Emacs
automatische 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 Emacs
24.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
: gedit
Mö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 emacs
gibt 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 ring
zur aktuellen Arbeitsposition: Viele Befehle, wie isearch-forward
, beginning-of-buffer
, ace-jump-mode
speichern die vorherige Position automatisch in mark ring
und Sie sollten nicht C-<SPC> C-<SPC>
vorher verwenden, sondern nur C-u C-<SPC>
zum Zurückspringen. Scroll-Befehle, wie scroll-up
oder mwheel-scroll
, speichern die vorherige Position standardmäßig nicht automatisch, da dies zu viele überflüssige Markierungen erzeugen kann.
clone-indirect-buffer
Sie können an einigen Stellen Befehle oder view-buffer-other-window
fü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)
)