在翻页的时候,如何让光标停留在翻页时候所在的行?

这样可以在屏幕刷新的时候立马知道当前行在哪里? 在vim mode 或者 emacs mode 翻页,或者翻半页

你要的是不是这个?

这个也不错,但不是我想要的,我是想要,我在翻页的时候,我的当前行去哪儿了?比如说 我正在看代码 第100行,下面没剩下几行了,然后想往上翻一下,翻半页我这一整页,但是一下子我者第100行就不好找了,不能继续接着看了。

Vim 和 Emacs 都不支持这功能。

我觉得这种情况下可以开双窗口。

好吧,那就没办法了,谢谢各位!

试试这些操作:

第一个命令移动到第一行/最后一行, pos 位置不变。

第二个命令移动 N 行,不超出 window 显示范围时 pos 位置不变。

(recenter 1)
(recenter -1)
(scroll-up-command N)
(scroll-down-command N)

可以用 C-l(后面那个是字母L)

C-l C-l可以将当前行放到放到最上面

如果你想要当前行始终保持位于中间的位置,可以SPC t - (只限 spacemacs)

2 个赞

翻页的时候固定光标,现代编辑器都不会这么做吧。看起来是个简单的需求,真要实现就麻烦了。

首先你要区分翻页和其它操作(比如 上/下/左/右)。

假设上面的问题都理清了,当你翻到第 N 页,看见想要找的内容,喜出望外,习惯地按下了 j 键直奔该行,打算复制回原点粘贴,却触发了任意门,两手空空直接回到了原点。。。其实也是有解的:1. 输入 :<行号>, 2. 鼠标点击该行(一会键盘一会鼠标,有点人格分裂)。。。不过这样一来,原点位置又丢了。

改进的方案是对翻页进一步划分:

- 需要回到原点 (第一次翻页的时候设置原点的位置)
- 无需回到原点

这样就可以不管翻了多少页,做了什么操作,都能一键回到原点了。

在我看来,是解决了一个问题,制造了更多麻烦(额外的操作/快捷键/注意力)。一旦忘记设置原点位置就跳到爪哇国了。

另一个比较可行的方案是,像现代编辑器一样,只在鼠标滚轮的时候固定光标,但是这样你除了回原点还是不能有其它操作。

为什么不把这个问题交给一些能自动记录跳转位置的扩展呢,比如 evil,几次 evil-jump-backward 就回来了(你不会向下翻几十页吧),还可以 forward 反向操作,并且不受 buffer 和窗口的限制。

1 个赞

楼上双窗口的做法,跟关机重启拔电池一样,简单粗暴有效,我也经常使用😅 开双窗口,两头对照,不管是参考抄写是复制粘贴,跳转次数最少。

重启是一个非常重要的维护工具,它可以解决90%的问题, 网管的必备工具.

这个问题解决思路有俩:

  1. 使用 ztzbzz 等命令,和 Ctrl+d/u 配合。最简单毋需配置。

    “翻页”时保持光标位置,不丢失上下文焦点。但最好不要用翻页来理解该操作,其实际效果应该类似于拽着画布移动到电脑屏幕的最上方/最下方(以获得更好视野)。

    根据楼主第三楼的描述,这时你应该使用 zt 命令,而不是 Ctrl+d 命令。

  2. 让光标始终保持在屏幕中央,完全不用以上三个命令。

    翻页时会丢失上下文焦点,但是因为光标始终中央,翻页前后的内容是完全可以预料的。其实际效果就是某些编辑器宣传的所谓“打字机模式”。目前我在用这个。

spacemacs 自带这个开关 SPC t -,但是我一般不开,因为影响性能。需要的时候 C-l 就行了。

好像叫 global center cursor mode?原先折腾 spacemacs 时找到开启过(Vim 的使用习惯),但体验不好,具体原因记不得了,好像是闪烁屏幕很跳的感觉。不太清楚 emacs,不知道这么个东东竟然能到影响性能的程度?

是啊,emacs 就是这么奇葩的存在,我也很惊奇,但是我在 org 下打开,移动光标快一点就会卡。也可能是我的配置有问题?

估计是配置问题,我倒是没怎么卡过,顶多是感觉补全慢一点而已。

有些功能还是官方自己实现下好些,什么都指望第三方 elpa 脚本实现,装个几百个包,不出问题就怪了。当然你可以从 mela 一堆包里面试,找出好用不冲突不卡的包弄个功能完善的配置,但这个花费的时间就太多了。

没错,我发现 spacemacs 的性能问题也比较严重,有些包,甚至是底层的包,没有做好优化。比如合作者 bmag 的包 window-purpose,那个包甚至会在你调用 (with-temp-buffer ..) 这种常用的函数时起作用,性能能好才见鬼了。我干脆把它屏蔽了。而且最吃性能的其实是 orgmode,也许你在其它 mode 下都可以跑得很流畅,但是到 org 这就不行了。

不过这也算是 org 的 featrue 吧,谁让它功能那么多呢

我最希望在 emacs 26 中看到的是性能的大幅改观。原生行号应该能提升些性能。

不太清楚 lisp 语法,不会调 bug。

有空可以尝试下 DOOM 那个配置,初看上去还不错。但奇怪也没见人分享使用经验。

DOOM 再好我也不会轻易尝试,我自己写了有 7-8 个 private layer,另外还有不少 local package,已经形成使用习惯了。而且来回折腾的时间成本太高了。

tan 90° ,不存在的。除非换解释器。Rust Emacs 也没有做到惊人程度的性能改观。