Rust rfig:用 Rust 实现的终端自动补全,支持 zsh、Bash、Fish

tamia6 · 2026年10月08日 · 19 次阅读

rfig:用 Rust 实现的终端自动补全,支持 zsh、Bash、Fish

rfig 是一个开源 Rust 终端工具,为 macOS 和 Linux 上的 zsh、Bash、Fish 提供输入即出现的命令补全菜单,以及按当前目录匹配的内联历史建议。它受 Fig 启发,是一个独立的开源 Fig 替代方案。

rfig 在 zsh 中展示命令补全菜单与内联历史建议

实际终端演示:命令与路径补全,以及输入 gi 时同时显示菜单和内联历史建议。

输入时展示候选,继续补全下一层

不用先按 Tab:输入命令后即可浏览候选,用上下方向键选择、右箭头插入,再继续输入下一层。已有补全定义可以提供子命令、当前仓库的分支、路径等动态内容;可用层级和候选范围取决于本机的补全来源。

菜单与历史建议可以同时出现,而且分别计算。例如只输入 gi 时,菜单仍然根据 gi 提示命令,灰色的历史建议则可能补出以前在当前目录执行过的 git checkout main。Ctrl+E 接受历史建议;有历史建议时 Enter 执行完整建议,否则执行实际输入,不会自动接受菜单选中项。

内置历史建议可以替代 zsh-autosuggestions 的历史命令建议功能。rfig 自行维护带工作目录的本地历史,不自动导入缺少目录信息的旧 Shell 历史。选择与执行记录也会参与候选排序,最多前三个有使用记录的候选显示圈号,其他候选仍正常展示。

Rust 与 Shell 怎样协作

zsh 使用 ZLE,Bash 和 Fish 共用 Rust 编辑层,命令仍由当前 Shell 执行。补全优先复用环境中的原生定义和已安装脚本,再结合可识别的补全生成器、协议和帮助缓存。

安装设置时快速扫描 PATH 与常见补全目录,随后在隔离能力可用的情况下,串行分析符合条件的用户命令。帮助分析只是后备来源,不能保证任意命令都有完整的多级补全。

图标与选中文字使用终端 ANSI 调色板,菜单以箭头指示选中项。历史、排序记录和缓存保存在本机。

安装

当前支持 macOS、Linux,以及 zsh、Bash 4.4+、Fish 3.6+。Homebrew 安装:

brew install tamia6/tap/rfig
rfig setup

设置后打开新的 Shell 会话。也可以下载包含二进制和安装脚本的发布包,或从源码安装;详细系统要求和使用说明见项目文档。

项目源码:https://github.com/tamia6/rfig

中文官网与演示:https://tamia6.github.io/rfig/zh/

欢迎反馈多 Shell 集成、终端显示和补全来源方面的体验。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号