2010-04-17 2 views
15

Ich kann meinen Zeiger in Emacs mit meiner Pfeiltaste ganz einfach eine Zeile nach oben und unten bewegen, also würde ich gerne C-n und C-p definieren, um 5 Zeilen gleichzeitig auf und ab zu gehen.Wie bewegt man den Zeiger mit Emacs mehrfach nach oben oder unten?

Ich fange gerade an zu lernen, wie man Emacs benutzt, und elisp ist mir sehr fremd. Ich habe versucht, die GNU Emacs lisp reference, aber ich konnte nicht finden, wie man einen Tastenanschlag an mehrere Befehle binden.

Hier ist, was ich bisher haben (auf der nach oben bewegt Definition konzentriert):

(global-set-key "\C-p" '(loop for i in '(1 2 3 4 5) do ('previous-line))) 

Aber das bringt eine Fehlermeldung, wenn ich C-p getroffen „Falscher Typ Argument.“

Irgendwelche Vorschläge?

Danke!

Antwort

18

Diese Funktion (ich glaube next-line und previous-line) akzeptieren ein optionales Argument mit C-u, so denke ich, dass (next-line 5) tun würde, was Sie wollen.

Edit: so einfach habe ich versucht, und das würde

(global-set-key (kbd "C-n") 
    (lambda() (interactive) (next-line 5))) 

Und das gleiche mit C-p und previous-line sein.

(Fiew nicht einfacher Code in einem Textfeld mit einer Telefon-Tastatur ^^ schreiben)

+3

Ja! Vielen Dank. Ich verwendete (next-line -5) für vorheriges, da es im Handbuch heißt: "Wenn Sie daran denken, dies in einem Lisp-Programm zu verwenden, sollten Sie' forward-line 'stattdessen mit einem negativen Argument verwenden zu verwenden und zuverlässiger (keine Abhängigkeit von der Zielspalte, etc.). " –

1

nach der Warnung in meinem Emacs config und den Kommentar von Peter Ajtai schlage ich die Version, die forward-line von meinem init.el verwendet

(global-set-key (kbd "C-n") 
    (lambda() (interactive) (forward-line 5))) 
(global-set-key (kbd "C-p") 
    (lambda() (interactive) (forward-line -5))) 

natürlich gibt es auch forward-char, funktioniert auf die gleiche, nur in einer anderen Richtung.

Das einzige, was fehlt, ist ein complex-forward, die eine komplexe Zahl als Argument übernimmt, und kann verwendet werden, in allen 4 Richtungen zu navigieren: P

Verwandte Themen