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

Ian*_*non 14 emacs cursor scrolling

发布后scroll-upscroll-down在emacs中,是否有一种快速的方法可以将点返回到以前的位置(假设我不记得将它添加到标记环中)?

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

我正在让自己习惯 emacs,这是最常见的引起诅咒的情况之一:我滚动查看代码的另一部分,但不记得将我的行添加到标记环中,然后尝试起来很痛苦重新定位我正在处理的代码行。因此,在我寻求技术解决方案的同时,我也很想听听经验丰富的用户如何避免这个问题。您是否只是习惯于记住设置标记、拆分窗口环顾四周或使用其他模式?

谢谢

Gil*_*il' 14

(setq scroll-preserve-screen-position t)
Run Code Online (Sandbox Code Playgroud)

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

你可能喜欢也可能不喜欢

(setq scroll-preserve-screen-position 'always)
Run Code Online (Sandbox Code Playgroud)

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

  • 也谢谢我!多年来,我在滚动之前输入了“<>”,只需返回一个搜索目标即可。 (2认同)

Tre*_*son 6

我发现效果很好的是使用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)
Run Code Online (Sandbox Code Playgroud)

  • 等效地,不需要额外的包:`C-_ Cf C-_`(撤消,移动,撤消)。 (2认同)