Starship.rs:适用于任何 shell 的简洁、快速提示符
Starship.rs 是一个跨 shell 的提示符工具,旨在提供丰富的上下文信息——例如 Git 状态、Kubernetes 上下文、虚拟环境和 nix shells——同时保持快速且易于配置。评论者强调了它在性能、合理默认值、短暂提示符,以及与 fish 等 shell 配合良好方面的优势,但也有人批评它色彩丰富、多行的风格,“默认启用一切”的设置,以及对 Nerd 字体的依赖是不必要的臃肿。该项目也再次引发了关于“用 Rust 重写 X”的争论:有人认为语言选择和内存安全是对用户有实际意义的优点,也有人把它视为单纯的实现细节和炒作。
Starship 是什么,以及它适合放在哪里
- 被描述为一个快速、跨 shell 的提示符替代方案,而不是 shell 本身。
- 它与 powerlevel10k/Oh-My-Zsh 的提示符部分以及其他提示符工具竞争,而不是直接与 zsh 或 fish 竞争。
- 其主要价值在于提供丰富的上下文信息(git 状态、Kubernetes 上下文、语言版本、nix/direnv 状态等),而无需编写复杂的 PS1 逻辑。
与自定义提示符和其他工具的比较
- 一些评论者指出,要在 shell 脚本中稳健地复现 Starship 的功能并不简单,尤其是在 git 边缘情况和大型仓库上。
- 也有人更喜欢自己手写的小型提示符,以获得控制力、简洁性,并避免额外的二进制程序。
- 一些用户觉得 Starship 没有 powerlevel10k 那么灵活,或者更慢;另一些人则认为它“快得足够”,而且配置起来容易得多。
配置、默认值与“极简主义”
- 有人喜欢开箱即用的丰富提示符,以及“无限可定制”的模块。
- 也有人强烈不喜欢它默认显示大量信息(例如邮箱、AWS 区域),更偏好按需启用的极简默认值。
- 关于把它称为“极简”的争论:
- 一方认为它并不极简,因为每次提示符刷新都要运行一个非平凡程序。
- 另一方认为它在“显示内容”上是极简的,因为呈现的是与上下文相关的信息,而不是杂乱内容。
性能与实现细节
- 许多用户表示,相比之前的提示符方案,它的延迟表现非常好,部分归功于它是用 Rust 实现的。
- 一位维护者指出,
custom模块可能会比较慢,因为它们会启动 shell;使用未进行完整初始化的 shell 可以缓解这一点。
视觉设计:颜色、字体、布局
- 对于色彩丰富、图标很多的提示符,大家看法不一:有人觉得它非常易读;也有人觉得它分散注意力,或者显得不专业。
- 对 Nerd Fonts 的依赖颇具争议;有人认为这不适合终端。也有人指出 Starship 在没有它们的情况下也能工作,并且针对无图标方案提供了预设。
- 关于多行提示符的争论:
- 优点:上下文更多、命令之间分隔清晰、输入区域可占满整行宽度。
- 缺点:被认为浪费垂直空间,并且起始列不一致。
- 短暂提示符(只有当前行显示完整提示符,之前的行会折叠)因能保持回滚内容整洁而受到称赞。
在不同机器上的采用
- 爱好者会在自己经常工作的所有地方安装 Starship(通常配合 fish),并自动化设置(例如通过 Nix/home-manager)。
- 怀疑者则会避免在共享/生产系统上使用它,以保持环境一致,并避免额外依赖。
Rust 与“用 Rust 重写 X”
- 一些人认为“用 Rust 编写”确实是一个卖点(内存安全、静态二进制、现代工具链)。
- 另一些人则厌倦了“X in Rust”的营销说法,并认为语言选择不应该成为头条卖点。