Frage Wie scrollt man Zeile für Zeile in GNU Emacs?


Um es einfach auszudrücken, versuche ich in Emacs zu scrollen, wie in vim und den meisten anderen Editoren; wenn ich zum Beispiel zwei Zeilen von unten / oben habe, drücke ich runter / hoch (Strg-p,n, ,) Es geht nur eine Zeile nach oben oder unten, nicht die Hälfte des Bildschirms.


75
2017-07-15 01:23


Ursprung


Antworten:


Sehen Sie einige der Vorschläge zum EmacsWiki:

(setq Scroll-Schritt 1
      scroll-konservativ 10000)

45
2017-07-15 01:30



Wenn Sie den Bildschirm genau positionieren möchten, können Sie Strg-L verwenden.

  • Standardmäßig positioniert es die aktuelle Zeile in der Mitte des Bildschirms.

  • ESC 0 Ctrl-L positioniert die aktuelle Zeile oben.


41
2017-07-15 04:33



Ich bin ein bisschen spät auf die Party, aber wenn es Ihnen nichts ausmacht ein Paket zu installieren, dann flüssiges Scrollen (Github, auch erhältlich in MELPA) kann sein, was Sie suchen - es funktioniert sicherlich für mich.

Sobald Sie es installiert haben, können Sie folgendes in Ihrer init.el einfügen:

(require 'smooth-scrolling)
(smooth-scrolling-mode 1)
(setq smooth-scroll-margin 5)

Die letzte Zeile ist optional; Es beginnt zu scrollen in der Nähe von der Bildschirmrand statt an ihm, so dass Sie immer einen kleinen Kontext um den Punkt haben. Passen Sie nach Geschmack.


35
2018-03-30 22:16



Meine Lösung besteht nicht darin, Emacs Standard-Scrolling zu ändern, sondern einen Tastenbefehl aus einem Makro zu erstellen. Auf diese Weise haben Sie eine bequeme Möglichkeit, um jeweils eine Zeile zu blättern. Nicht ideal, aber super einfach. Es kommt einfach vor, dass M- (↓) und M- (↑) verfügbar sind, also habe ich das benutzt.

So habe ich es gemacht. Zuerst müssen Sie ein Makro für eine Zeile scrollen, hoch und runter.

Beginne das Makro

C-x ( 

Scrollen Sie nach unten

C-u 1 C-v

Stoppen Sie das Makro

C-x )

Um nach oben zu scrollen, benutze

C-u 1 M-v

Als nächstes müssen Sie das Makro benennen.

M-x name-last-kbd-macro

Geben Sie ihm einen Namen, wenn Sie dazu aufgefordert werden:

down-one-line

Verwenden Sie dann Folgendes, um eine Schlüsselsequenz an diesen Befehlsnamen zu binden:

M-x global-set-key

Verwenden Sie nach Aufforderung etwas wie:

M-(down arrow)

Dann werden Sie gefragt, welchen Befehl Sie binden möchten, und Sie sollten ihm den Namen geben, den Sie früher erfunden haben, z. B. down-one-line.

Hier habe ich diese Information bekommen. Sie finden auch Anweisungen zum Hinzufügen Ihres Makros zur .emacs-Datei.

Hier für die Erklärung der Makrodefinition

Hier wie man das Scrollen steuert


24
2017-08-04 18:01



Ich benutze diese in meinem .emacs Datei seit 2000.

(global-set-key (quote [M-down]) (quote View-scroll-line-forward))
(global-set-key (quote [M-up]) (quote View-scroll-line-backward)) 

Auf diese Weise kann ich sowohl das Emacs-Standardverhalten beibehalten als auch eine Zeile nach der anderen blättern, je nachdem, was ich gerade mache.

Dies funktionierte bis mindestens GNU Emacs 22. Ich habe vor kurzem auf Emacs 24 aufgerüstet und das entdeckt View-scroll-line-forward und View-scroll-line-backward sind nicht mehr verfügbar. Nach einiger Jagd entdeckte ich, dass Scroll-Up-Line und Scroll-Down-Line arbeiten. Wenn Sie Emacs 24 verwenden, können Sie dies verwenden.

(global-set-key (quote [M-down]) (quote scroll-up-line))
(global-set-key (quote [M-up]) (quote scroll-down-line)) 

Ich habe Emacs 23 meistens übersprungen. Wenn das die Version ist, die du verwendest, kannst du beides ausprobieren.

Hinweis: scroll-up-line scrollt tatsächlich eine Zeile Nieder, weil das Puffer wird um eine Zeile verschoben.


19
2018-04-26 05:01



Ich verbinde meine Pfeiltasten erneut, um Scroll-Operationen durchzuführen.

(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)))

12
2017-07-15 06:16



Simples tun dies:

(global-set-key [M-up] (lambda () (interactive) (scroll-up 1)))
(global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))

dann bewegt sich der Meta-Cursor nach oben und der Meta-Cursor nach unten.

QED. Nicht sicher, was alle oben genannten Leute rauchten!


11
2018-03-06 10:37



Ich habe die folgenden in meiner .emacs-Datei, um ein nettes ctrl-up, ctrl-down-Scroll-Verhalten zu ermöglichen. Ich benutze das auch für das Mausrad.

(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)

4
2017-07-15 19:07



M-x customize-variable scroll-conservatively

Setze es auf 1.

Du willst das aber nicht wirklich machen.


2
2017-07-15 01:35



Um den "vim" -Scroll zu machen, setze dies in deine .emacs-Datei:

(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)

2
2018-06-24 14:36