emacs:如何在滚动/翻页后返回到上一个位置?

emacs:如何在滚动/翻页后返回到上一个位置?

scroll-up在 emacs中发出后scroll-down,有没有一种快速的方法可以将点返回到其之前的位置(假设我没有记得将其添加到标记环中)?

或者,有没有什么方法(不干扰标记环)来改变滚动行为,以便向上滚动然后向下滚动(反之亦然)将点返回到其原始位置?(例如,使滚动将点精确地移动 x 行,其中 x 是屏幕高度)

我正在适应 emacs,这是最常见的令人讨厌的情况之一:我滚动屏幕查看代码的另一部分,却忘记将代码行添加到标记环中,然后尝试重新定位我正在处理的代码行就很麻烦了。因此,在我寻求技术解决方案的同时,我也想知道经验丰富的用户是如何避免这个问题的。您是否只是习惯于记住设置标记、拆分窗口以查看或使用其他模式?

谢谢

答案1

(setq scroll-preserve-screen-position t)

使用此设置,如果您向上和向下翻页,光标将返回到其原始行。在 Emacs 版本 23 或更高版本中,它还保留其原始列。

你可能喜欢,也可能不喜欢

(setq scroll-preserve-screen-position 'always)

滚动时始终保留光标的屏幕位置,而不是在原始位置仍然可见时保留缓冲区中的光标位置。

答案2

我发现效果很好的方法是使用goto-last-change.el,它会将您弹回到上次编辑的位置。我喜欢这个绑定:

(require 'goto-last-change) ;; download this package and install in load-path
(global-set-key (kbd "C-x C-\\") 'goto-last-change)

答案3

回答你关于如何避免你描述的问题的问题(查看代码中的其他地方然后返回到我当时工作的位置)...

通常,当我需要短暂查看其他地方时,我会分割屏幕。然后我可以使用 返回原始屏幕C-x o,使用 取消分割C-x 1,然后我又恢复正常。

我还使用正向和反向 i-search 来定位代码中特定的关注点。我发现当我知道我在寻找什么时,这是一种相当有效的代码导航方法。

答案4

包裹还原点开箱即用,完全符合您的描述。

它检查一组(可配置的)命令是否已执行(默认情况下,标记命令、滚动和翻页),然后允许您通过点击 返回到上一个点(光标)位置keyboard-quit,通常绑定到C-gESC

免责声明:我是这个包的作者。

相关内容