2010-04-17 70 views
15

我可以使用箭头键在Emacs中将指针上下移动一行,所以我想重新定义C-n和C-p以一次上下移动5行。如何用Emacs将指针向上或向下移动多行?

我刚开始学习如何使用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,一个错误信息“错误的类型参数。”

有什么建议吗?

谢谢!

回答

18

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

编辑:所以我只是想,这将是

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

并与C-P和previous-line相同。

(Fiew不是简单的与手机键盘^^一个文本编写代码),根据我的emacs配置警告

+3

是的!谢谢。我最后使用了(next-line-5)作为前面的,因为在手册中它说:“如果你正在考虑在Lisp程序中使用它,请考虑使用带有否定参数的'forward-line'。使用更可靠(不依赖目标栏等)“。 – 2010-04-17 07:26:12

1

,并从彼得Ajtai的评论,我建议使用forward-line从我​​版本

(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

相关问题