键盘滚动加速

时间:2013-04-05 20:23:48

标签: emacs

可以轻松映射某些键以向上滚动。

(defun up1()
  (interactive)
  (scroll-up 1))
(defun up2()
  (interactive)
  (scroll-up 2))
(global-set-key "\M-]" 'up2)

我正在寻找以下行为。第一把 scroll会调用up1(),后续的调用up2()。

1 个答案:

答案 0 :(得分:1)

这个怎么样:

(setq my-scroll-counter 0)
(setq my-scroll-limit 5)

(defun up1()
  (interactive)
  (if (eq last-command this-command)
      (incf my-scroll-counter)
    (setq my-scroll-counter 0))
  (if (> my-scroll-counter my-scroll-limit) 
      (scroll-up 2)
    (scroll-up 1)))

(global-set-key "\M-]" 'up1)

如果你想要一些有点发烧友的东西,你可以根据重复命令的次数动态计算你的滚动步骤:

(setq my-scroll-counter 0)
(setq my-maximum-scroll 20)
(setq my-scroll-acceleration 4)

(defun up1()
  (interactive)
  (if (eq last-command this-command)
      (incf my-scroll-counter)
    (setq my-scroll-counter 0))
  (scroll-up (min 
               (+ 1 (/ my-scroll-counter my-scroll-acceleration)) 
               my-maximum-scroll)))

(global-set-key "\M-]" 'up1)