Emacs 键盘加速滚动

Emacs 键盘加速滚动,emacs,Emacs,你可以很容易地映射一些键来向上滚动 (defun up1() (interactive) (scroll-up 1)) (defun up2() (interactive) (scroll-up 2)) (global-set-key "\M-]" 'up2) 我正在寻找以下行为。第一批 卷轴将调用up1(),后续的卷轴将调用up2()。这样如何: (设置我的滚动计数器0) (设置我的滚动限制5) (defun up1) (互动) (如果(eq最后一个命令此命令) (增加我的滚

你可以很容易地映射一些键来向上滚动

(defun up1()
  (interactive)
  (scroll-up 1))
(defun up2()
  (interactive)
  (scroll-up 2))
(global-set-key "\M-]" 'up2)
我正在寻找以下行为。第一批 卷轴将调用up1(),后续的卷轴将调用up2()。

这样如何:

(设置我的滚动计数器0)
(设置我的滚动限制5)
(defun up1)
(互动)
(如果(eq最后一个命令此命令)
(增加我的滚动计数器)
(设置我的滚动计数器0))
(如果(>我的滚动计数器我的滚动限制)
(向上滚动2)
(向上滚动1)
(全局设置键“\M-]”up1)
如果您想要一些更华丽的东西,可以根据重复该命令的次数动态计算滚动步长:

(设置我的滚动计数器0)
(设置我的最大卷轴20)
(设置我的滚动加速4)
(defun up1)
(互动)
(如果(eq最后一个命令此命令)
(增加我的滚动计数器)
(设置我的滚动计数器0))
(向上滚动(分钟)
(+1(/我的滚动计数器我的滚动加速度))
我的最大卷轴)
(全局设置键“\M-]”up1)
这个怎么样:

(设置我的滚动计数器0)
(设置我的滚动限制5)
(defun up1)
(互动)
(如果(eq最后一个命令此命令)
(增加我的滚动计数器)
(设置我的滚动计数器0))
(如果(>我的滚动计数器我的滚动限制)
(向上滚动2)
(向上滚动1)
(全局设置键“\M-]”up1)
如果您想要一些更华丽的东西,可以根据重复该命令的次数动态计算滚动步长:

(设置我的滚动计数器0)
(设置我的最大卷轴20)
(设置我的滚动加速4)
(defun up1)
(互动)
(如果(eq最后一个命令此命令)
(增加我的滚动计数器)
(设置我的滚动计数器0))
(向上滚动(分钟)
(+1(/我的滚动计数器我的滚动加速度))
我的最大卷轴)
(全局设置键“\M-]”up1)

不完全是。。我希望“加速”只在键盘上重复。我的想法是,如果我停止滚动,这意味着我想更仔细地查看当前可见的代码。我不明白你的意思。当您连续调用1次以上
my scroll limit
而中间没有其他命令时,加速度就会生效。“键盘内重复”是什么意思?如果你按键盘键,只会输入一个实例,但如果你按住它,键会重复,你会得到多个实例。如果按住\M-],我希望滚动开始时缓慢,但随后加速。如果我停止,我希望重新启动相同的行为。然后,你所需要的只是在Tyler的解决方案中添加一个计时器,以便在过长的时间间隔内按两次键不会增加计数器:不完全是。。我希望“加速”只在键盘上重复。我的想法是,如果我停止滚动,这意味着我想更仔细地查看当前可见的代码。我不明白你的意思。当您连续调用1次以上
my scroll limit
而中间没有其他命令时,加速度就会生效。“键盘内重复”是什么意思?如果你按键盘键,只会输入一个实例,但如果你按住它,键会重复,你会得到多个实例。如果按住\M-],我希望滚动开始时缓慢,但随后加速。如果我停止,我希望重新启动相同的行为。然后,您只需在Tyler的解决方案中添加一个计时器,以便在过长的时间间隔内按两次键不会增加计数器: