翻页的时候固定光标,现代编辑器都不会这么做吧。看起来是个简单的需求,真要实现就麻烦了。
首先你要区分翻页和其它操作(比如 上/下/左/右)。
假设上面的问题都理清了,当你翻到第 N 页,看见想要找的内容,喜出望外,习惯地按下了 j 键直奔该行,打算复制回原点粘贴,却触发了任意门,两手空空直接回到了原点。。。其实也是有解的:1. 输入 :<行号>
, 2. 鼠标点击该行(一会键盘一会鼠标,有点人格分裂)。。。不过这样一来,原点位置又丢了。
改进的方案是对翻页进一步划分:
- 需要回到原点 (第一次翻页的时候设置原点的位置)
- 无需回到原点
这样就可以不管翻了多少页,做了什么操作,都能一键回到原点了。
在我看来,是解决了一个问题,制造了更多麻烦(额外的操作/快捷键/注意力)。一旦忘记设置原点位置就跳到爪哇国了。
另一个比较可行的方案是,像现代编辑器一样,只在鼠标滚轮的时候固定光标,但是这样你除了回原点还是不能有其它操作。
为什么不把这个问题交给一些能自动记录跳转位置的扩展呢,比如 evil
,几次 evil-jump-backward
就回来了(你不会向下翻几十页吧),还可以 forward 反向操作,并且不受 buffer 和窗口的限制。
1 个赞
楼上双窗口的做法,跟关机重启拔电池
一样,简单粗暴有效,我也经常使用😅 开双窗口,两头对照,不管是参考抄写是复制粘贴,跳转次数最少。
重启是一个非常重要的维护工具,它可以解决90%的问题, 网管的必备工具.
et2010
12
spacemacs 自带这个开关 SPC t -,但是我一般不开,因为影响性能。需要的时候 C-l 就行了。
好像叫 global center cursor mode?原先折腾 spacemacs 时找到开启过(Vim 的使用习惯),但体验不好,具体原因记不得了,好像是闪烁屏幕很跳的感觉。不太清楚 emacs,不知道这么个东东竟然能到影响性能的程度?
et2010
14
是啊,emacs 就是这么奇葩的存在,我也很惊奇,但是我在 org 下打开,移动光标快一点就会卡。也可能是我的配置有问题?
估计是配置问题,我倒是没怎么卡过,顶多是感觉补全慢一点而已。
有些功能还是官方自己实现下好些,什么都指望第三方 elpa 脚本实现,装个几百个包,不出问题就怪了。当然你可以从 mela 一堆包里面试,找出好用不冲突不卡的包弄个功能完善的配置,但这个花费的时间就太多了。
et2010
16
没错,我发现 spacemacs 的性能问题也比较严重,有些包,甚至是底层的包,没有做好优化。比如合作者 bmag 的包 window-purpose,那个包甚至会在你调用 (with-temp-buffer ..)
这种常用的函数时起作用,性能能好才见鬼了。我干脆把它屏蔽了。而且最吃性能的其实是 orgmode,也许你在其它 mode 下都可以跑得很流畅,但是到 org 这就不行了。
不过这也算是 org 的 featrue 吧,谁让它功能那么多呢
我最希望在 emacs 26 中看到的是性能的大幅改观。原生行号应该能提升些性能。
不太清楚 lisp 语法,不会调 bug。
有空可以尝试下 DOOM 那个配置,初看上去还不错。但奇怪也没见人分享使用经验。
et2010
18
DOOM 再好我也不会轻易尝试,我自己写了有 7-8 个 private layer,另外还有不少 local package,已经形成使用习惯了。而且来回折腾的时间成本太高了。
LdBeth
19
tan 90° ,不存在的。除非换解释器。Rust Emacs 也没有做到惊人程度的性能改观。
这礼拜 Reddit 上有人推荐换 Racket 内核,举双手赞成,因为 Racket 的文档超详尽,还有 Racket 的解释器是 Chez,Chez 的速度比 Chicken,guile,MIT,快太多太多了。
Remacs 的进展很慢很慢,C 代码没换多少,可能连 10 分之一都不到。
根本看不到 Rust 代码的影子。
LdBeth
22
讲个事,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=更理解代码的程序员。
ztlevi
25
用evil-jump,C-i, C-o想怎么跳怎么跳。。。
(setq scroll-preserve-screen-position 'always)