我在用doom emacs,配置是搭配ivy使用的。最近发现WSL2里rg搜索项目内容很容易卡住,项目文件越多越明显,想输入一个单词来搜索的,只来得及输入第一个字符它就开始搜索了,过了10多秒出现第一轮结果列表之后才继续显示我输入的后续字符,这卡住的10多秒期间一直按C-g也是没用的。
道友们指点一下我该如何debug呢?或者有没有办法设置至少两个字符才开始搜索呢?
下面的图是随便找个项目演示一下,按了t
之后狂按i
,卡了两秒才出来i
,实际项目的话比演示的严重很多。
下面是 doom的profiler:
大佬,其实我试过了,确实不卡,但是我的日常操作比较依赖ivy-resume:先发起搜索得到初步结果,选择结果列表第5项打开,发现不是想要的目标,ivy-resume,弹出刚才的搜索结果,并且列表的选中项还是第5,我往下选择第6项打开,做些修改,再ivy-resume,列表依然保持选中第6项,我接着往下选择……
还有doom按 SPC-* 会用当前光标下的单词来在项目中搜索,按SPC s S 会用光标下的单词来在当前buffer搜索……暂时没有能力将blink-search定制到符合使用习惯
不知道你具体用的哪个命令,可以试试 counsel-rg
,至少三个字符才会开始搜索。
我看我截图里的profiler分析就是调用的counsel-rg, 我试了M-x手动调用,也是一个字符就开始搜索,同样的卡住
Try (setq ivy-dynamic-exhibit-delay-ms 300)
1 个赞
默认counsel-rg 至少需要三个字符才开始搜索的。
但是这样做的缺点是,ivy连选择下一项搜索结果都会过300ms才触发,暂时改为100用着先
delay不够好用是吧?你这情况最简单且有效的办法肯定是把最少字符改回3个。我怀疑是doom改成了一个,代码不熟悉至少可以翻下doom的文档试试。
如果有新的搜索框架比如blink search觉得好用,然后需要加上搜索当前symbol/region之类的功能,这是很简单的呀,只要创建一个command,在里面调用search,参数为(thing-at-pt 'symbol)
之类的,然后绑定个按键就完了。
对的,我就是按你说的试过一遍了,把当前符号传给blink-search的函数,然后还根据不同按键拼接好叹号或者井号再传进去,但是发现它没有按我传的字符串前缀来搜索,暂时就没折腾了
晚上再搜索一下doom的代码看看哪里改为1了
找到了, 从这里翻到的:
(after! ivy
(setq ivy-more-chars-alist '((counsel-rg . 2)
(counsel-search . 2)
(t . 3))))
1 个赞