我可以用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时出现错误信息,“错误的类型参数。”
有什么建议吗?
谢谢!
答案 0 :(得分:18)
这些功能(我相信next-line
和previous-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