web-dev-qa-db-fra.com

Ne changez pas la position du curseur lors du défilement dans Emacs

Y a-t-il un moyen d'arrêter Emacs de déplacer automatiquement ma position de texte-curseur (alias, point) pendant que je suis défilant? Je continue à perdre mon emplacement et marque avec ce comportement ennuyeux.

J'ai testé la suggestion suivante, sans succès:

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

(Je cours Emacs 24.2 sur Ubuntu et ON OS X.)

19
NVaughan

Je pense que vous voulez que le comportement du curseur (point) et la zone visible soit comme dans notepad, gedit, autres éditeurs modernes: possibilité de changer de surface visible indépendamment de la position du point et de revenir immédiatement visible. zone à la position du point après le déplacement. Mais emacs a une autre conception: la zone visible suit toujours la position du point et la vitrine Versa.

Voir aussi https://stackoverflow.com/questions/9616623/ctrl-up-down-style-scrolling-in-emacs

La réponse précédente montre une idiome spéciale: si vous souhaitez déplacer la zone visible (avec le point ensemble) de la position actuelle, puis pour renvoyer le point exactement de la position précédente, vous devez avoir une habitude d'utiliser mark-ring. Il y a toujours un moyen de passer par mark ring au poste de travail actuel: de nombreuses commandes, comme isearch-forward, beginning-of-buffer, ace-jump-mode Enregistrer automatiquement la position précédente dans mark ring Et vous ne devriez pas utiliser C-<SPC> C-<SPC> avant, mais seulement C-u C-<SPC> Pour sauter. Les commandes de défilement, comme scroll-up ou mwheel-scroll, ne sauvegardez pas automatiquement la position précédente par défaut car elle peut produire trop de marques excessives.

Vous pouvez utiliser des commandes clone-indirect-buffer ou view-buffer-other-window Pour un travail indépendant avec tampon dans quelques endroits. Et utilisez la commande recenter-top-bottom (C-l) Le point de maintien continuellement au centre de la zone visible.

12
artscan

Je ne sais pas s'il y a un moyen d'arrêter Emacs de déplacer votre point lors du défilement. Mais si vous souhaitez enregistrer votre emplacement pour y retourner plus tard, vous pouvez utiliser la touche Marque Bague .

C'est-à-dire de type C-<SPC> C-<SPC> Pour repousser l'emplacement du point de courant sur la barre de marque, puis le type C-u C-<SPC> Pour définir le point sur l'emplacement précédent dans la barre de marque.

7
Kirill

Les œuvres suivantes pour moi:

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