51

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

此外,当我用鼠标(滚轮或滚动条)在 Emacs 中滚动时,光标会跳到可见屏幕区域内 - 有没有办法覆盖该行为,使其保持在它所在的行上,即使它走出屏幕?换句话说,我不希望新键入的符号出现的位置因滚动而改变。

任何关于如何查看远程代码部分然后快速返回之前位置的替代建议也是受欢迎的。

4

7 回答 7

84

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

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

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

于 2009-01-15T06:55:57.140 回答
6

我使用面包屑在缓冲区或所有缓冲区周围留下痕迹。

放下面包屑,去看看你想要/需要的任何东西,然后跳回面包屑。这是我要做的事情,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)

希望有帮助。

于 2009-01-15T13:19:34.667 回答
6

这是我的设置:

(setq mouse-wheel-scroll-amount '(0.07))
(setq mouse-wheel-progressive-speed nil)
(setq ring-bell-function '忽略)
于 2014-09-26T06:28:03.660 回答
2

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

我认为您在最后一点中想要的 - 查看远程部分并返回 - 可以通过寄存器来完成:

这将保存您在寄存器 A 中的位置:

Cxr A

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

Cx rj A

如果你经常这样做,我建议将它们绑定到稍微不那么冗长的东西:)

于 2009-01-15T07:25:28.063 回答
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.
于 2009-01-15T14:50:43.967 回答
2

任何关于如何查看远程代码部分然后快速返回之前位置的替代建议也是受欢迎的。

Bob Glickstein 的“Writing GNU Emacs Extensions”的第 3 章构建了一个 unscroll 函数(返回到滚动命令堆栈中的指定位置)作为编程示例。

该代码在线显示,但如果您使用它,则报告与欧洲央行发生冲突。

于 2009-01-15T20:53:51.660 回答
0

使用易来易去的自动命名书签——Bookmark + 。只需按一个键即可创建或删除——就像设置标记一样简单。它们可以是持久的或暂时的。如果您愿意(边缘或线条),它们可以自动突出显示。

于 2011-11-02T18:03:19.973 回答