3 个版本

使用旧的 Rust 2015

0.1.2 2018年9月7日
0.1.1 2018年8月27日
0.1.0 2018年8月27日

#fuzzy-finder 中排名 18

每月下载 24

自定义许可证

42KB
1K SLoC

fzyr

fzyr 是一个简单且快速的模糊文本搜索工具,它既是一个 Rust 库,也是一个独立的可执行文件。

基本上 fzy 是用 Rust 语言重写的。

为什么?

fzyr 存在是因为我想在学习 Rust 时创建一个模糊搜索器库。然而,你可能发现它对你的目的很有用。

fzyrfzy 非常相似,因此继承了它的优点(至少到 2018 年 8 月为止)。对于大多数用途,它可以作为一个即插即用的替代品。

fzy 的优势

  • 它在 Windows 上运行!或者至少应该如此,尚未实际测试,如果不行,请告诉我 🖥
  • 它与所有 Unicode 字符串一起工作!你好,世界其他地方 🗺️
  • 你可以使用 Cargo!跨平台包管理 📦
  • 它是一个 Rust 库!在你的项目中使用该算法 😀

fzy 的劣势

  • 它的测试不如充分
  • 它不支持任意 tty 输入/输出(仅 stdin/stdout)
  • 交互式模式需要更多的工作

安装

Cargo

您可以使用 Cargo 在任何支持的平台上安装,这是 Rust 的出色包管理器。

$ cargo install fzyr

Linux

您可以使用 Cargo,或者如果您愿意,可以安装为 snap

$ snap install fzyr

Homebrew

可能在某个时候出现...

Windows

使用 Cargo

用法

查看 fzy 了解一些用法示例。

在文件中搜索包含 "something" 的行

$ cat very-long-file | fzyr -q something

交互式搜索文件

$ find . -type f | fzyr

使用以下选项进行探索

$ fzyr -h

库文档

即将推出...

算法

该算法几乎与 fzy 的相同。这意味着

  • 搜索不区分大小写(所有字符都转换为它们的 Unicode 定义的低字符版本,如果有的话)
  • 结果必须包含整个查询字符串,顺序正确,但字母不必连续
  • 所有结果都给出了一个数值评分,并按评分从高到低返回
  • 优先考虑连续字符和单词/文件名开头的字符
  • 优先考虑更短的结果

待办事项清单

如果您有动力,请随意提交PR

  • 改进交互模式
  • 库文档
  • search_locate()的测试
  • 集成测试
  • 基准测试
  • 适用于各种操作系统(OS)的软件包
  • 零分配搜索
  • 任意tty输入/输出

依赖项

约6-14MB
约130K SLoC