2010-04-17 74 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

相關問題