如何使用Emacs向上或向下移动指针?

时间:2010-04-17 06:57:33

标签: emacs elisp binding keystrokes

我可以用Emacs中的箭头键将我的指针上下移动一行,所以我想重新定义C-n和C-p一次上下移动5行。

我刚开始学习如何使用Emacs,而elisp对我来说非常陌生。我尝试使用GNU Emacs lisp reference,但我找不到如何将键击绑定到多个命令。

这是我到目前为止所做的事情(专注于提升定义):

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

但是,当我点击C-p时出现错误信息,“错误的类型参数。”

有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:18)

这些功能(我相信next-lineprevious-line)接受C-u的选项参数,所以我认为(next-line 5)会做你想要的。

编辑:所以我只是尝试了,那将是

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

与C-p和previous-line相同。

(Fiew在带有手机键盘的textarea中编写代码并不简单^^)

答案 1 :(得分:1)

根据我的emacs配置中的警告以及Peter Ajtai的评论,我建议使用forward-line

init.el的版本
(global-set-key (kbd "C-n")
    (lambda () (interactive) (forward-line  5)))
(global-set-key (kbd "C-p")
    (lambda () (interactive) (forward-line -5)))

当然还有forward-char,它的工作方式相同,只是方向不同。

唯一缺少的是complex-forward,它以复数作为参数,可用于在所有4个方向上导航:P