it-swarm.com.de

Wie scrolle ich zeilenweise in GNU Emacs?

Einfach ausgedrückt, ich versuche, in Emacs wie in Vim und den meisten anderen Editoren zu scrollen. wenn ich zum Beispiel zwei Zeilen von unten/oben bin, und ich drücke unten/oben (Ctrl-p,n,) Es geht nur eine Zeile nach oben oder unten, nicht die Hälfte des Bildschirms.

79
Rook

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

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

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

46
starblue

Sehen Sie einige Vorschläge zum EmacsWIki:

 (setq scroll-step 1 
 konservativ scrollen 10000) 
46
ars

Ich bin ein bisschen zu spät zur Party, aber wenn Sie nichts dagegen haben, ein Paket zu installieren, dann könnten smooth-scrolling ( github , auch in MELPA ) verfügbar sein suche - es funktioniert auf jeden Fall für mich.

Nachdem Sie es installiert haben, können Sie Folgendes in Ihre init.el einfügen:

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

Die letzte Zeile ist optional. es beginnt, nahe am Bildschirmrand zu scrollen und nicht an diesem, so dass Sie immer einen kleinen Kontext um den Punkt herum haben. Nach Geschmack einstellen.

36

Meine Lösung besteht darin, den Standard-Bildlauf von Emac nicht zu ändern, sondern einen Tastaturbefehl aus einem Makro zu erstellen. Auf diese Weise haben Sie eine bequeme Möglichkeit, eine Zeile zu einem Zeitpunkt zu scrollen, wann Sie möchten. Nicht ideal, aber super einfach. Es kommt einfach vor, dass M- (↓) und M- (↑) verfügbar sind, also habe ich das verwendet.

So habe ich es gemacht. Zuerst müssen Sie ein Makro für eine Zeile nach oben und unten aufzeichnen.

Beginnen Sie mit dem Makro

C-x ( 

Einen nach unten scrollen

C-u 1 C-v

Stoppen Sie das Makro

C-x )

Verwenden Sie für einen Bildlauf nach oben

C-u 1 M-v

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

M-x name-last-kbd-macro

Vergeben Sie einen Namen, wenn Sie dazu aufgefordert werden:

down-one-line

Verwenden Sie dann einfach die folgenden Anweisungen, um eine Tastensequenz an diesen Befehlsnamen zu binden:

M-x global-set-key

Und verwenden Sie auf 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 zuvor erfunden haben, z. B. "Down-One-Line".

Hier habe ich diese Informationen erhalten. Anweisungen zum Hinzufügen eines Makros zur .emacs-Datei finden Sie auch an anderer Stelle.

Hier zur Erklärung der Makrodefinition

Hier für wie man das Scrollen steuert

24
Josh Cason

Ich verwende diese seit 2000 in meiner .emacs-Datei.

(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 das Emacs-Standardverhalten beibehalten und jeweils eine Zeile scrollen, je nachdem, was ich mache.

Dies funktionierte bis mindestens GNU Emacs 22. Ich habe kürzlich ein Upgrade auf Emacs 24 durchgeführt und festgestellt, dass View-scroll-line-forward und View-scroll-line-backward nicht mehr verfügbar sind. Nach einiger Jagd entdeckte ich, dass Scroll-Up-Line und Scroll-Down-Line funktionieren. Wenn Sie also 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 Sie also die verwendete Version verwenden, können Sie mit beiden der oben genannten experimentieren.

Hinweis: scroll-up-line rollt tatsächlich um eine Zeile down , da der Puffer um eine Zeile nach oben verschoben wird.

20
Rajesh J Advani

Ich binde meine Pfeiltasten erneut, um Bildlaufoperationen 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
Derek Slager

Einfach machen Sie das:

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

Ich habe folgendes in meiner .emacs-Datei, um ein Nice-Verhalten beim Ctrl-Up und Ctrl-Down-Scrollen zu ermöglichen. Ich benutze dies 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
Alex B

M-x customize-variable scroll-conservatively

Stellen Sie es auf 1.

Das willst du aber nicht wirklich.

2
jrockway

Da kann es ärgerlich sein das zu benutzen M-upM-down weil es den org-Modus stört, der diese Befehle überlastet. Um dieses Problem zu vermeiden, benutze ich persönlich die Befehle, die kombiniert werden M-page-upM-page-downMsgstr "" "Hier habe ich den Bildlauf nach oben und unten auf 1 Zeile festgelegt.

;;;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))))
2
romwel

Um das "vim" scrollen zu lassen, fügen Sie dies in Ihre .emacs-Datei ein: 

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

Wenn Sie nach einer schnellen Methode zum Erzeugen eines scrollähnlichen Effekts suchen, geben Sie nacheinander in C-n und C-l ein, wodurch der Cursor nach unten bewegt und zentriert wird.

Wenn Sie emacs in .xsession starten, funktioniert das Scrollen konservativ auf 100+ weder, noch scrollen Sie Schritt 1. Wenn Sie emacs jedoch nach X starten, funktioniert es.

0
seb