15

我可以在 Emacs 中使用箭头键将指针上下移动一行,所以我想重新定义 Cn 和 Cp 一次上下移动 5 行。

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

这是我到目前为止所拥有的(专注于向上移动的定义):

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

但是,当我点击 Cp 时,这会显示一条错误消息“错误类型参数”。

有什么建议么?

谢谢!

4

2 回答 2

18

那些函数(我相信next-lineprevious-line)接受 Cu 的可选参数,所以我认为这(next-line 5)会做你想要的。

编辑:所以我只是尝试过,那就是

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

与 Cp 和 相同previous-line

(用手机键盘在文本区域写代码并不简单^^)

于 2010-04-17T07:07:53.373 回答
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

于 2016-05-31T12:34:11.727 回答