欢迎试用 blink-search

欢迎试用 blink-search

blink-search 的设计:

  1. 像 lsp-bridge 那样混合不同的后端,而不是 helm 那样后端堆叠, 提高切换不同后端的效率
  2. 像 helm 那样, 在左边混合多个搜索源, 一个按键搜索全部
  3. 像 ivy 那样针对 rg、find 的情况,在右边列出当前后端所有匹配项, 方便边搜边看的情形
  4. 像 vertico 那样对通用的 read-completion 接口提供支持, 这样很多地方即使插件没有提供搜索界面, 都会统一模糊搜索 (规划中, 未来实现)
  5. 像 helm/ivy 那样针对模糊匹配的地方, 进行精致的匹配高亮
  6. 模糊算法和精确高亮匹配在 python 做, Emacs只做渲染和命令执行, 这样性能会提高到极致 (helm,ivy都会遇到返回结构太多触发 GC 导致Emacs卡顿)

目前已经支持 Buffer List、Find File、Recent File、EAF Browser History、Current Buffer、Grep File、Elisp Symbol、Google Suggest等搜索后端,每个搜索后端都运行在Python线程中, 同时, 不管搜索有多少结果(比如几万条), Emacs都只渲染可视区域内的选项。

从实测结果看, blink-search 具备 helm 的能力, 同时搜索和选择性能比 ivy 还快。

目前架构设计和性能已经达到预期, 还有很多小细节需要完善, 开发完成以后, snails 将不再维护。

欢迎大家试用, 反馈, 提交PR。:smiling_face_with_three_hearts::smiling_face_with_three_hearts::smiling_face_with_three_hearts:

32 个赞

蹭蹭大佬,PR 了个 typo 问题。

感谢感谢,zsbd

文档可能需要注明赖 requests

Traceback (most recent call last):
  File "/home/xinyifly/.config/emacs/site-lisp/blink-search/blink_search.py", line 34, in <module>
    from backend.search_google_suggestion import SearchGoogleSuggestion
  File "/home/xinyifly/.config/emacs/site-lisp/blink-search/backend/search_google_suggestion.py", line 23, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

已经修复, 谢谢提醒。

Snails 里面80%我感兴趣的功能已经被 blink-search 实现了, 我已经完全切换到 blink-search 了, 速度快的我心情都变好了。

3 个赞

还在用着 color-rg呢,又有新东西了。大佬牛啊

color-rg 非常适合代码重构的场景, 整个设计更加固定, 方便批量操作, ivy/helm/blink-search 这种增量式的 rg 过滤其实适合探索代码, 因为太不稳定了, 没有 color-rg 重构那么有生产力。

我平常两个都用, blink-search 是因为 lsp-bridge 启发, 可以做到性能最快的搜索框架。

1 个赞

我实现了一个 common directory 的搜索后端, 可以对常用目录快速搜索来打开子目录, 比如打开 HOME 下或者 projects 目录下的子目录

1 个赞

  1. 修改一下逻辑, 默认进行多源搜索, 多源搜索用双窗口展示, 目标是快速汇聚多源内容, 方便选择。
  2. # 开头的关键字用 ripgrep 搜索当前 buffer 内容 (单窗口展示, 双窗口宽度不够 ripgrep 展示)
  3. ! 开头的关键字用 ripgrep 搜索当前 project 下所有文件的内容

ripgrep 这个工具还是很强大, 直接可以输出 json 格式, 做搜索匹配就很简单了。

大佬牛啊!!!

加了 tooltip

1 个赞

大佬请问一下,我在windows试用了 blink-search,在执行blink-search-do的时候直接跳转到了相应的文件,没有出现您上面回复中截图里那种文本匹配的效果。使用emacs -Q 进行排查结果一样,想请问一下这是我这边python配置的问题吗?

应该是你环境编码的问题

加了类似 lsp-bridge 的图标。

1 个赞

更新到 Force utf-8 to open file. · manateelazycat/[email protected] · GitHub 这个版本再试一下吧。

好的,我本地更新试一下。

请问一下 acm-enable-icons 这个变量是其他包定义的吗?本地找不到这个变量的定义,现在运行blink-search的时候不显示信息了。

哈哈哈, icon代码是从 lsp-bridge 拷贝出来的, 已经修复了。