非 Swiper 用户,不清楚具体细节,但 9 MB 已经算是大文件了,假设是代码的话,大概能有十万行之多,并且 Emacs 自身默认就有个 10 MB 的限制
large-file-warning-threshold
=> 10000000
再加上 Swiper 看起来是实时地搜索,或许「卡」才是理所当然的。你可以
- 避免手动编辑如此大的文本文件,红楼梦大概八十万字,也就 3 MB 而已。
- 改用 Emacs 默认的 isearch,虽然它也是交互的,但感觉它应该会较为流畅。
- 实在不行就
M-x grep
,它肯定非常快。
swiper 都要被玩坏了吧。
9M 文件首次打开就需要不少时间了,然后每次键改变一个字符,swiper 就要把 9M 内容搜索一遍,结果放到临时 buffer (搜索关键字清空之后两个 buffer 是一样的,加起来就是 18M)。不仅临时 buffer 的内容实时变动,移动光标还要改变原文件 buffer 窗口内容。
不知道你这样操作的目的是什么,如果是移动光标,直接 [i]search-for/backward
。如果是内容替换直接 replace-regexp/string
。
如果想得到一个结果列表,或者还想编辑,可以用类似 helm-ag-buffers
的函数(不知道 swipper/ivy/consel 下对应的是哪个函数…abo-abo 这一套扩展到底叫什么?有没有个统一的说法😅) 。M-x grep
搜索结果好像不能编辑?并且搜索的是当前整个目录。
更低碳的做法是去终端用命令。
可以用 counsel-grep-or-swiper
,文件大的时候自动使用 grep 但是功能和swiper一样
是这个理,我就是习惯了使用swiper来浏览器文件 我这个是个日志文件,我是从里面检索查看匹配的每一条记录,这种移动光标改变原buffer的方式很方便查看,而使用counsel-ag是很快但是由于一行很长导致在临时buffer里面看不全所以才。。。。
我试试看效果怎么样
isearch是相比要流畅,但就是看起来不如swiper的更方便
https://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html
可以考虑用 Boyer-Moore 算法重写 swiper
9m的日志肉眼查看?你很拽哟
就不能想想看还有没更好的办法?
我并不是要做什么,只是从里面找找看有没有我想要的记录 在使用swiper的时候很卡 有点强迫症犯了:joy:
Space f l
是啊这么大文件正常人肯定是sed/awk/uniq/sort,虽然这样可能要去查查用法,swiper爽的确是爽…