Ändern Sie nicht die Cursorposition, wenn Sie in Emacs scrollen

18

Gibt es eine Möglichkeit zu verhindern, dass Emacsmeine Textcursorposition (auch bekannt als Punkt) beim Scrollen automatisch verschoben wird? Ich verliere immer wieder meinen Standort und vermerke mich mit diesem nervigen Verhalten.

Ich habe den folgenden Vorschlag ohne Erfolg getestet:

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

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

NVaughan
quelle

Antworten:

11

Ich denke , dass Sie das Verhalten der Cursor (Punkt) wollen und sichtbaren Bereich sein sollte wie in notepad, gedit, andere moderne Editoren: Fähigkeit unabhängig von Punktposition sichtbaren Bereich zu ändern und sofort sichtbaren Bereich Punktposition zurückzukehren , nachdem Punkt bewegt. Hat aber emacseine andere Vorstellung: Der sichtbare Bereich folgt immer der Punktposition und umgekehrt.

Siehe auch /programming/9616623/ctrl-up-down-style-scrolling-inemacs

Die vorherige Antwort zeigt eine spezielle Redewendung: Wenn Sie den sichtbaren Bereich (mit dem Punkt zusammen) von der aktuellen Position entfernen und dann den Punkt genau an die vorherige Position zurückbringen möchten, sollten Sie die Gewohnheit haben, ihn zu verwenden mark-ring. Es gibt immer einen Weg durch mark ringdie aktuelle Arbeitsposition: viele Befehle, wie isearch-forward, beginning-of-buffer, ace-jump-modeautomatisch speichern vorherige Position in mark ringund Sie sollten nicht verwenden , C-<SPC> C-<SPC>vor, sondern nur C-u C-<SPC>für das Springen zurück. Bildlaufbefehle wie scroll-upoder mwheel-scrollspeichern die vorherige Position nicht automatisch, da sie möglicherweise zu viele übermäßige Markierungen erzeugt.

Sie können Befehle verwenden clone-indirect-bufferoder view-buffer-other-windowan wenigen Stellen unabhängig mit dem Puffer arbeiten. Verwenden Sie außerdem command recenter-top-bottom( C-l), um den Punkt kontinuierlich in der Mitte des sichtbaren Bereichs zu halten.

artscan
quelle
2
Vielen Dank. Interessante Antwort. Es scheint jedoch ein Problem mit meinem Emacs zu geben (sowohl unter Mac als auch unter Ubuntu): C-u C-<SPC>Scheint nicht zu funktionieren. Ich weiß nicht, ob es ein Problem ist cua-modeoder so. Ich habe versucht, Emacs mit -qOption auszuführen, aber nichts hat sich geändert. Irgendwelche Ideen?
NVaughan
Das ist schade ... ich finde das super nervig, weil ich benutze highlight-symbol-mode. Ich setze den Cursor auf eine Variable und sie hebt alle Vorkommen hervor. Wenn ich mit dem Scrollen beginne, verlässt der Cursor die Variable und alle Markierungen gehen verloren. Emacs wäre viel besser, wenn es sich zumindest in Sachen Scrollen wie andere zeitgenössische Editoren verhalten würde.
Itmuckel
7

Ich weiß nicht, ob es eine Möglichkeit gibt, zu verhindern, dass Emacs beim Scrollen Ihren Punkt verschieben. Wenn Sie jedoch Ihren Standort speichern möchten, um später wieder dorthin zurückzukehren, können Sie den Markierungsring verwenden .

Geben Sie also ein, C-<SPC> C-<SPC>um die aktuelle Punktposition auf den Markierungsring zu schieben, und geben Sie später ein C-u C-<SPC>, um den Punkt auf die vorherige Position im Markierungsring zu setzen.

Kirill
quelle
3

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")
Sergey
quelle
0

Folgendes funktioniert für mich:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )
einer der japanischen Emacs-Benutzer
quelle