¿Cómo se mueve el puntero hacia arriba o hacia abajo varias líneas con Emacs?
-
27-09-2019 - |
Pregunta
Me puedo mover el puntero hacia arriba y hacia abajo una línea con mi tecla de flecha muy bien en Emacs, así que me gustaría redefinir C-N y C-p para desplazarse hacia arriba y hacia abajo 5 líneas a la vez.
Me estoy empezando a aprender a usar Emacs, y elisp es muy ajeno a mí. He intentado utilizar el GNU Emacs Lisp referencia, pero no pude t encontrar cómo enlazar una tecla a varios comandos.
Esto es lo que tengo hasta ahora (concentrándose en la definición subiendo):
(global-set-key "\C-p" '(loop for i in '(1 2 3 4 5) do ('previous-line)))
Sin embargo, esto trae un mensaje de error cuando golpeo C-p, "argumento de tipo incorrecto."
¿Alguna sugerencia?
Gracias!
Solución
Los función (creo next-line
y previous-line
) acepta un argumento optionnal con C-u, así que creo que sería (next-line 5)
hacer lo que quiera.
Edit: por lo que he intentado y que sería
(global-set-key (kbd "C-n")
(lambda () (interactive) (next-line 5)))
Y lo mismo con C-py previous-line
.
(Fiew no fácil de escribir código en un área de texto con un teclado de teléfono ^^)
Otros consejos
según la advertencia en mi emacs config, y el comentario de Peter Ajtai, propongo la versión que utiliza forward-line
de mi init.el
(global-set-key (kbd "C-n")
(lambda () (interactive) (forward-line 5)))
(global-set-key (kbd "C-p")
(lambda () (interactive) (forward-line -5)))
Por supuesto, también hay forward-char
, funciona de la misma, solo en una dirección diferente.
La única cosa que falta es un complex-forward
que toma un número complejo como un argumento, y se puede utilizar para navegar en las 4 direcciones: P