如何使Emacs鼠标滚动更慢更顺畅?

时间:2009-01-15 06:49:51

标签: emacs scroll mouse

当我使用鼠标滚轮滚动Emacs时,它一次滚动5行,我认为这太过分了 - 我在哪里设置新值?

此外,当我使用鼠标(滚轮或滚动条)滚动Emacs时,光标会跳转到可见屏幕区域内 - 有没有办法覆盖该行为,使其保持在它所在的线上,即使它离开屏幕?换句话说,我不想通过滚动来改变新输入符号的位置。

我还欢迎任何有关如何查看某些远程代码然后快速返回原位置的替代建议。

7 个答案:

答案 0 :(得分:78)

您可以控制变量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 :(得分:6)

我使用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)

希望有所帮助。

答案 2 :(得分:2)

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

我认为你想要的最后一点 - 窥视一个遥远的部分并返回 - 可以用寄存器完成:

这样可以保存你在寄存器A中的位置:

C-x r A

这将从寄存器A恢复位置:

C-x r j A

如果你这么做了很多,我建议将这些事情与那些略显冗长的事情结合起来:)

答案 3 :(得分:2)

您可以使用一些书签解决方案或寄存器,还可以使用内置标记和标记环 -

(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.

答案 4 :(得分:2)

  

我还欢迎任何有关如何查看某些远程代码然后快速返回原位置的替代建议。

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

代码appears on-line,但如果您使用a reported conflict with the ECB,,则会有{{3}}。

答案 5 :(得分:2)

这是我的设置:

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

答案 6 :(得分:1)

使用easy-come-easy-go autonamed bookmarks - Bookmark+。只需按一下键即可创建或删除 - 就像设置标记一样简单。它们可以是持久的或临时的。如果你喜欢(边缘或线条),它们可以自动突出显示。