2013-02-11 41 views
5

我想将C-f C-b映射为以文件中固定数量的行向前和向后移动。使用参数定义键绑定

我这样做:

(global-set-key (kbd "C-f") 'next-line) 
(global-set-key (kbd "C-b") 'previous-line) 

,但我不知道如何指定next-line命令之前的参数。我想我应该使用digit-argument,但我无法以正确的方式编写命令。

+0

可能重复http://stackoverflow.com/questions/1250846/error-in-emacs-elisp-when -binding-a-lambda-a-key) – 2013-02-11 03:12:49

+0

ok this(global-set-key(kbd“Cf”)') (lambda()(interactive)(forward-line 5)))的作品。 虽然它不能完全回答我的问题,但我怎么会绑定类似M-5 Cn或更复杂的宏而不必使用lambda,我可能会错过elisp工作上真正基本的东西... – igon 2013-02-11 03:20:28

回答

7

一个可能的选择将是定义一个新功能:

(defun my-next-line() 
    (interactive) 
    (next-line 5)) 

(global-set-key (kbd "C-f") 'my-next-line) 

否则,如果它仅仅是东西,你可以用键盘完成,你可能想使用

M-x name-last-kbd-macro 

和保存它在你的.emacs文件中

M-x insert-kbd-macro 

并且让emacs为你实现这个功能。 它只是将让你在你的电话给了名字,最后大骨节病宏

+0

我不知道关于插入宏,这是非常有用的。谢谢 – igon 2013-02-11 16:53:53

+0

我已经尝试过用字符串参数在工作中,但不要忘记(正如我第一次)报价。谢谢:) – boclodoa 2013-09-04 04:30:56

12

你改变你的问题的名称是如何直接绑定到按键序列

这种结合抄送升铜5的C n

(global-set-key (kbd "C-c l") (kbd "C-u 5 C-n")) 
[emacs中的λ结合到键的elisp当错误](的
+0

不错,我不知道。非常感谢这个提示。 – mikyra 2013-02-11 18:25:13

+0

不错,不知道! – PascalVKooten 2013-02-11 22:09:08

+0

当您已经知道击键并删除命名宏的步骤时,这是添加新键控绑定的绝佳方式。 – aartist 2013-02-12 17:27:43