Cette question a été initialement posée sur /programming/15895313/let-emacs-move-the-cursor-off-screen , mais toutes les réponses que j'ai reçues ont plus ou moins dit "ça ne peut pas être fait" , ce que je n'accepte pas avec emacs.
Est-il possible de laisser Emacs déplacer le curseur hors de l'écran, comme la plupart des éditeurs de texte GUI fonctionnent? C'est l'une des plus grandes choses qui me dérange lorsque j'utilise Emacs sur n'importe quel éditeur GUI. Lorsque je défile vers le bas, le curseur est "poussé vers l'avant" par le haut du tampon.
J'avais précédemment pensé que c'était complètement impossible, car cela est câblé dans l'architecture d'Emacs, mais j'ai ensuite vu plusieurs curseurs, ce qui fait exactement cela pour les curseurs secondaires (en supposant que vous empêchiez les fonctions de défilement d'agir sur le secondaire). curseurs). Est-il possible d'utiliser plusieurs curseurs pour avoir le curseur principal dans un tampon caché, et le curseur efficace étant ce avec quoi je modifie réellement? Ou peut-être un autre truc intelligent? Ou peut-être que mon googling m'a échoué et que c'est vraiment déjà possible sans magie?
J'utilise le terminal emacs, donc cela devrait fonctionner là-bas.
Réponses:
Il existe un nouveau package disponible sur GNU ELPA appelé
scroll-restore
qui tente de remédier à ce problème. Il y a une poignée de comportements différents à choisir, mais la façon dont je l'ai configuré pour moi-même (voir ci-dessous) fait que le curseur devient invisible pendant les commandes de défilement, puis revient à son emplacement d'origine lorsque je recommence à taper.Jusqu'à présent, j'ai rencontré quelques bugs, mais le package semble fonctionner comme annoncé pour la plupart. Vous pouvez le tester en l'installant avec
Une fois le package installé, vous pouvez activer le mode mineur avec
Personnellement, je le lie à la Scroll Lockclé car il semble si incroyablement approprié! Voici ce que j'ajoute à mon fichier init:
la source
La méthode que j'utilise toujours consiste à définir la marque à laquelle je veux revenir, puis lorsque j'ai fini de parcourir le tampon, je pop la marque à l'aide
C-u C-SPC
. Même lorsque j'oublie de fixer la marque avant de m'éloigner, je trouve que le fait d'appuyer sur la marque me place généralement assez près d'où je viens. Cela est dû en partie au fait que certaines commandes (commeisearch
par exemple) définissent la marque sans même que vous vous en rendiez compte. Donc, au cours de votre montage, vous avez laissé par inadvertance une petite trace de chapelure.De la documentation:
Je ne me soucie presque jamais de définir des signets ou des registres, mais je peux presque toujours retrouver mon chemin d'où je viens en utilisant rapidement
C-u C-SPC
oupop-global-mark
.la source
scroll-up
etscroll-down
définir automatiquement la marque, afin queC-u C-SPC
vous soyez sûr de revenir d'où vous venez.Le code suivant est assez bon pour moi de revenir en arrière après le défilement de la molette de la souris:
la source