如何让Emacs鼠标滚动更慢更平滑?

问题描述:

当我使用鼠标滚轮滚动Emacs时,它每次滚动5行,我认为这太多了 - 我在哪里设置新值?另外,当我用鼠标(滚轮或滚动条)在Emacs中滚动时,光标跳转到可见屏幕区域内 - 是否有一种方法可以覆盖该行为,使其停留在它所在的行上,即使它在屏幕外?换句话说,我不希望新滚动的符号出现改变的位置。如何让Emacs鼠标滚动更慢更平滑?

任何关于如何能够窥视代码的某个远程部分然后迅速返回到原来位置的建议也是受欢迎的。

您可以控制变量mouse-wheel-scroll-amount(mwheel.el)中的金额。

编辑:例如,将 (setq mouse-wheel-scroll-amount '(1 ((shift) . 1) ((control) . nil))) 添加到您的.emacs中,一次一行。

我在我的.emacs中也有(setq mouse-wheel-progressive-speed nil),我认为这是更好的行为。

+1

添加(setq鼠标滚轮滚动量“(1))到我的.emacs,它的工作原理。我也喜欢(setq鼠标滚轮渐进速度零)。 – Headcrab 2009-01-15 07:20:37

+0

Headcrab,这是你正在寻找的答案吗?如果是这样,请接受它。 – Geoff 2012-02-08 20:29:15

在当前视图之外的某个地方存在“点”是不可能的;所有点移动命令也移动显示。我认为这是emacs制造的一个基本假设。

我觉得你在你的最后一点想要的东西 - 偷看到远程段和返回 - 可以用寄存器来实现:

这样可以节省寄存器A您的位置:

CX R A

而这个恢复从寄存器A中的位置:

CX RJ一个

如果你这样做了很多我建议结合日对事情稍微不详细:)

我使用breadcrumb在缓冲区或所有缓冲区周围留下踪迹。

放下面包屑,看看你想要/需要的东西,然后跳回面包屑。这里是我的东西设置,FWIW:

(global-set-key [(f6)] 'bc-set) 
(global-set-key [(shift f6)] 'bc-list) 
(global-set-key [(control f6)] 'bc-previous) 
(global-set-key [(meta f6)] 'bc-next) 
(global-set-key [(shift control f6)] 'bc-local-previous) 
(global-set-key [(shift meta f6)] 'bc-local-next) 

希望有所帮助。

你可以使用一些书签溶液或寄存器,而且内置的标记和标记环 -

(default binding) 

C-Space to set mark (push a mark in mark ring) 
C-u C-Space to pop a mark off the ring; repeat this a few more time should 
      get you where you like to be 

,或者如果你没有高光区域上,或者你不介意看到高亮,

C-x C-x (exchange-point-and-mark) switch between you current point and your previous mark. 

对我怎么能窥视到一些代码偏僻路段,然后快速返回到原来位置的任何其他建议也欢迎。

作为编程示例,Bob Glickstein's "Writing GNU Emacs Extensions"的第3章构建了一个unscroll函数(返回到scroll-command堆栈中的指定位置)。

代码appears on-line,但如果您使用该代码则有a reported conflict with the ECB,

使用易于使用易于使用autonamed bookmarks - Bookmark+。只需点击一个键即可创建或删除 - 与设置标记一样简单。他们可以是持久的或临时的。他们可以自动突出显示,如果你喜欢(边缘或线)。

这里是我的设置:

 
(setq mouse-wheel-scroll-amount '(0.07)) 
(setq mouse-wheel-progressive-speed nil) 
(setq ring-bell-function 'ignore)