2013-02-11 65 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