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

这个问题解决思路有俩:

  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 也没有做到惊人程度的性能改观。

这礼拜 Reddit 上有人推荐换 Racket 内核,举双手赞成,因为 Racket 的文档超详尽,还有 Racket 的解释器是 Chez,Chez 的速度比 Chicken,guile,MIT,快太多太多了。

Remacs 的进展很慢很慢,C 代码没换多少,可能连 10 分之一都不到。

根本看不到 Rust 代码的影子。

讲个事,GitHub 代码统计是以文件为单位的,所以其实不能拿来当证据。

然后考虑到许可和政治因素,不太可能用 Racket

@stonejiajia @LdBeth

⋊> cloc ~/gitrepos/remacs
    3318 text files.
    3242 unique files.
     882 files ignored.

github.com/AlDanial/cloc v 1.74  T=29.15 s (83.7 files/s, 70562.8 lines/s)
-----------------------------------------------------------------------------
Language                   files          blank        comment           code
-----------------------------------------------------------------------------
Lisp                        1654         158349         213058        1115523
C                            263          56263          72020         270227
C/C++ Header                 200           8936          13321          39810
TeX                           27           3984           6428          17831
Objective C                    9           3515           2467          15612
m4                           100           1313            859          14140
Rust                          42            876           1126           6548
Bourne Shell                  17            610            865           5371
HTML                          18            178             68           2679
Pascal                         2            191            241           2205
...                          ...            ...            ...            ...
-----------------------------------------------------------------------------
SUM:                        2440         237953         312649        1506407
-----------------------------------------------------------------------------
1 个赞

看到这里想起来刚开始在jetbrains里用vim插件的时候也很不习惯它的C-d C-u,现在细想一下的话,其实还是不习惯,但是编辑的时候这两个键少按了很多(虽然仍然非常多)。
Instead,要找特定符号直接/nnnnn,然后ma mb 'a 'b 'a,给每个地方取个alias,比如constructor就mc、member变量就mm,index函数就mi,这样这个文件编辑一会儿之后脑袋里hashMap很完善了,就想去哪儿就去哪儿,'c瞬间跳转,但是比较占用脑袋空间。楼主写C/C++文件比较大可能不一定好用,我前端文件比较小这样很痛快。

vim/evil用多了就感觉自己越发接近机器了,剪贴板registers和marker registers再也离不开,编辑一行代码,带着我要改什么,眼睛一看先去找unique的字符,逗号括号等等,不够再看两个连一起的(用evil-snipe),人肉正则匹配一下,然后按下c2t, C-r "IDE=更理解代码的编辑器;vim/evil users=更理解代码的程序员。

用evil-jump,C-i, C-o想怎么跳怎么跳。。。

push-mark pop-mark感觉最简单

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

你的意思是不是:用鼠标滚轮滚动页面时,或srcoll页面时,希望保留光标在文档中的位置不变,而不是保持光标停留在窗口中的显示位置不变?感觉回答的人有好几种理解…

是的

看起来这个问题确实无解