听说最近的display-line-numbers很好用,但是实用下来感觉还是有性能上的问题。
不知道是只有我如此还是普遍现象,如果是用visual或relative的话,在翻页的时候能明显的感觉到要延迟,按理说相对行号不应该如此啊,不过即便是相对行号,也会计算整个buffer的行号。
各位用相对行号的都是怎么处理的呢。
听说最近的display-line-numbers很好用,但是实用下来感觉还是有性能上的问题。
不知道是只有我如此还是普遍现象,如果是用visual或relative的话,在翻页的时候能明显的感觉到要延迟,按理说相对行号不应该如此啊,不过即便是相对行号,也会计算整个buffer的行号。
各位用相对行号的都是怎么处理的呢。
个人使用中没有卡顿。最好有视频或者 git 说明下你是什么情况。
我觉得不应该叫卡顿,在一个大概200行以上的文件,在某个中间的位置,向上翻页M-v一次。关掉行号之后,重复这个操作,感觉上消耗的时间相同吗?
我这里能明显感觉开了行号的情况下会慢。
会不会是 gc 问题,试试调大gc-cons-threshold
.
我用这代码试了下差20ms做右,30ms和50ms的区别。
(let ((time (current-time)))
(call-interactively #'scroll-down-command)
(message "%.06f" (float-time (time-since time))))
按理说20ms应该没啥大差别,不知道为什么总是感觉不太灵活。
其实,不用行号也挺舒服的(要是真感觉性能受不了,推荐一下不显示行号
我一直是不用的,但是感觉有相对行号有些操作会方便。比如说向下选10行。
这种事你可以先打一个 mark 然后 C-u 数字 C-n
我是超过10000行的org文件就不显示行号,prog-mode都显示,不管多少行。代码习惯显示行号,不然总觉得不爽。
(use-package display-line-numbers
:ensure nil
:hook (prog-mode . display-line-numbers-mode)
(org-mode . albert-display-line-numbers)
:init
;; 文件超过10000行,不显示行号,只留4位吧
(setq display-line-numbers-width-start 4)
(defun albert-display-line-numbers ()
"org-mode的文件,如果行数<10000行就显示行号."
(let ((num (line-number-at-pos (point-max))))
(message "Opening %s, total lines: %d" (buffer-file-name) num)
(if (< num 10000)
(display-line-numbers-mode 1))))
)
问题是没有行号看不出来有几行啊?你是说C-u的时候把行号切出来?
别说10000行,我感觉这个延迟在100行就可以感觉出来。
似乎还有其他因素,有时很慢,有时还行。
把major mode 改为 fundamental mode慢吗?
好像没有什么影响,体验差不多。还没有摸清啥情况下很慢。
我是说这种事应该让电脑帮你数。比如 C-u 10 C-n
就是下移 10 行。
我相信你理解错了
我的意思是说,没有相对行号,我怎么能一眼看出该是10行。
我不懂,可能是我理解错了,请无视吧
avy
直接跳到对应行就好了。
感觉一个数字带一个命令还是比avy那种单纯的移动好。
20毫秒按理说不应该感觉得到啊