Pour faire simple, j'essaye d'obtenir le défilement dans emacs comme dans vim et la plupart des autres éditeurs; quand je suis par exemple, deux lignes à partir du bas / haut, et je presse vers le bas / vers le haut ( Ctrl- p, n, ↑, ↓) il va seulement une ligne vers le haut ou vers le bas, pas la moitié de l'écran.
87
z.
dans vim plus fréquemment pour obtenir le sentiment Emacs ;-) Cela peut être inhabituel, mais c'est en fait plus utile que de faire défiler ligne par ligne à mon humble avis.Réponses:
Voir quelques-unes des suggestions sur EmacsWIki:
la source
scroll-conservatively
. Les avertissements contre cela sont un peu étranges - si cela pose problème, il est assez facile de supprimer la ligne de votre init.el!Si vous souhaitez positionner l'écran exactement, vous pouvez utiliser Ctrl-L.
Par défaut, il positionne la ligne courante au milieu de l'écran.
ESC 0 Ctrl-L positionne la ligne courante en haut.
la source
Je suis un peu en retard à la fête, mais si cela ne vous dérange pas d'installer un package, alors le défilement en douceur ( github , également disponible dans MELPA ) peut être ce que vous recherchez - cela fonctionne certainement pour moi.
Une fois que vous l'avez installé, vous pouvez afficher ce qui suit dans votre init.el:
(require 'smooth-scrolling) (smooth-scrolling-mode 1) (setq smooth-scroll-margin 5)
La dernière ligne est facultative; il commence à défiler près du bord de l'écran plutôt que sur celui-ci, vous avez donc toujours un peu de contexte autour du point. Ajustez au goût.
la source
Ma solution n'est pas de changer le défilement par défaut d'Emac, mais plutôt de créer une commande de séquence de touches à partir d'une macro. De cette façon, vous disposez d'un moyen pratique de faire défiler une ligne à la fois quand vous le souhaitez. Pas idéal, mais super facile. Il arrive juste que M- (↓) et M- (↑) soient disponibles, c'est donc ce que j'ai utilisé.
Voilà comment je l'ai fait. Tout d'abord, vous devez enregistrer une macro pour les défilements d'une ligne, de haut en bas.
Commencer la macro
Faites défiler vers le bas
C-u 1 C-v
Arrêter la macro
Pour faire défiler vers le haut, utilisez
C-u 1 M-v
Ensuite, vous devez nommer la macro.
Donnez-lui un nom lorsque vous y êtes invité comme:
Ensuite, utilisez simplement ce qui suit pour lier une séquence de touches à ce nom de commande:
Et à l'invite, utilisez quelque chose comme:
M-(down arrow)
Ensuite, il vous demandera quelle commande vous voulez lier, et vous devriez lui donner le nom que vous avez inventé précédemment, par exemple, une ligne en bas.
Voici où j'ai obtenu cette information. Vous pouvez également trouver des instructions ci-dessous et ailleurs sur l'ajout de votre macro au fichier .emacs.
Ici pour l'explication de la définition de macro
Ici pour savoir comment contrôler le défilement
la source
Je les utilise dans mon
.emacs
dossier depuis 2000.(global-set-key (quote [M-down]) (quote View-scroll-line-forward)) (global-set-key (quote [M-up]) (quote View-scroll-line-backward))
De cette façon, je peux conserver le comportement par défaut d'Emacs et faire défiler une ligne à la fois, en fonction de ce que je fais.
Cela a fonctionné jusqu'à au moins GNU Emacs 22. J'ai récemment mis à niveau vers Emacs 24 et j'ai découvert cela
View-scroll-line-forward
et je ne suisView-scroll-line-backward
plus disponible. Après quelques recherches, j'ai découvert ce travail de défilement vers le haut et vers le bas. Donc, si vous utilisez Emacs 24, vous pouvez l'utiliser.(global-set-key (quote [M-down]) (quote scroll-up-line)) (global-set-key (quote [M-up]) (quote scroll-down-line))
J'ai principalement ignoré Emacs 23, donc si c'est la version que vous utilisez, vous pouvez expérimenter les deux.
Remarque:
scroll-up-line
fait défiler en fait une ligne vers le bas , car le tampon est déplacé d'une ligne vers le haut.la source
Je réassocie mes touches fléchées pour effectuer des opérations de défilement.
(global-set-key [up] (lambda () (interactive) (scroll-down 1))) (global-set-key [down] (lambda () (interactive) (scroll-up 1))) (global-set-key [left] (lambda () (interactive) (scroll-right tab-width t))) (global-set-key [right] (lambda () (interactive) (scroll-left tab-width t)))
la source
Les Simples font ceci:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1))) (global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
puis le méta curseur vers le haut se déplace vers le haut et le méta curseur vers le bas se déplace vers le bas.
QED. Je ne sais pas ce que toutes les personnes ci-dessus fumaient!
la source
J'ai ce qui suit dans mon fichier .emacs pour activer un bon comportement de défilement ctrl-haut, ctrl-bas. J'utilise également ceci pour la molette de la souris.
(defun scroll-down-in-place (n) (interactive "p") (previous-line n) (scroll-down n)) (defun scroll-up-in-place (n) (interactive "p") (next-line n) (scroll-up n)) (global-set-key [mouse-4] 'scroll-down-in-place) (global-set-key [mouse-5] 'scroll-up-in-place) (global-set-key [C-up] 'scroll-down-in-place) (global-set-key [C-down] 'scroll-up-in-place)
la source
Pour que le défilement "vim" place ceci dans votre fichier .emacs:
(defun next-line-and-recenter () (interactive) (next-line) (recenter)) (defun previous-line-and-recenter () (interactive) (previous-line) (recenter)) (global-set-key (kbd "C-n") 'next-line-and-recenter) (global-set-key (kbd "C-p") 'previous-line-and-recenter)
la source
Puisqu'il peut être ennuyeux d'utiliser le M-up, M-downcar cela interfère avec le mode org qui surcharge ces commandes. Pour éviter ce problème, j'utilise personnellement ces commandes qui combinent M-page-up M-page-down". Ici, j'ai défini le défilement vers le haut et vers le bas jusqu'à 1 ligne.
;;;scroll by `number-of-lines' without the cursor attached to the screen (global-set-key [M-prior] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-down number-of-lines) (forward-line (- number-of-lines))))) (global-set-key [M-next] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-up number-of-lines) (forward-line number-of-lines)))) ;;;scroll by `number-of-lines' with the cursor attached to the screen (global-set-key [S-M-prior] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-down number-of-lines)))) (global-set-key [S-M-next] (lambda () (interactive) (let ((number-of-lines 1)) (scroll-up number-of-lines))))
la source
M-x customize-variable scroll-conservatively
Réglez-le sur 1.
Cependant, vous ne voulez pas vraiment faire ça.
la source
Si vous cherchez un moyen rapide de créer un effet de défilement, entrez
C-n
etC-l
séquentiellement ce qui déplace le curseur vers le bas puis le centre.la source
Si vous démarrez emacs en .xsession, dans mon cas, régler le scroll-conservativement à 100+ ne fonctionnera pas, ni le scroll-step 1. Mais si vous démarrez emacs après X, cela fonctionne.
la source
Si cela ne vous dérange pas d'utiliser la souris et d'avoir une molette de défilement, vous pouvez personnaliser la variable mouse-wheel-scroll-amount de l'une ou l'autre:
Ch v mouse-wheel-scroll-amount (cliquez sur personnaliser, changez la valeur en "Specific # of lines" 1, ApplyAndSave.)
ou ajoutez à .emacs la ligne: '(mouse-wheel-scroll-amount' (1 ((shift). 1) ((meta)) ((control). text-scale)))
Il existe de nombreuses possibilités répertoriées sur https://www.emacswiki.org/emacs/Scrolling
la source