2010-04-17 21 views
15

Je peux déplacer mon pointeur de haut en bas avec une flèche dans Emacs, donc je voudrais redéfinir C-n et C-p pour monter et descendre 5 lignes à la fois. Je commence juste à apprendre à utiliser Emacs, et elisp est très étranger à moi. J'ai essayé d'utiliser le GNU Emacs lisp reference, mais je ne pouvais pas trouver comment lier une frappe à plusieurs commandes.Comment déplacer le pointeur vers le haut ou vers le bas sur plusieurs lignes avec Emacs?

Voici ce que j'ai jusqu'à présent (se concentrer sur le déplacement jusqu'à la définition):

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

Mais, cela soulève un message d'erreur quand je frappe C-p, « argument de type incorrect. »

Des suggestions?

Merci!

Répondre

18

Ces fonctions (je crois next-line et previous-line) acceptent un argument optionnel avec C-u, donc je pense que (next-line 5) ferait ce que vous voulez.

Edit: donc je viens d'essayer et ce serait

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

Et même avec C-p et previous-line.

(Fiew pas simple à écrire du code dans une zone de texte avec un clavier de téléphone ^^)

+3

Oui! Je vous remercie. J'ai fini par utiliser (next-line -5) pour le précédent, car dans le manuel il est écrit "Si vous envisagez d'utiliser ceci dans un programme Lisp, pensez à utiliser 'forward-line' avec un argument négatif à la place. à utiliser et plus fiable (pas de dépendance sur la colonne de but, etc.). " –

1

selon l'avertissement dans ma config emacs, et le commentaire de Peter Ajtai, je propose la version qui utilise forward-line de mon init.el

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

Bien sûr, il y a aussi forward-char, fonctionne de la même, juste dans une autre direction.

La seule chose qui manque est un complex-forward qui prend un nombre complexe comme argument, et peut être utilisé pour naviguer dans les 4 directions: P