简介
Starship 是一款使用 Rust 编写的跨 Shell 提示符工具,以极快的速度和高度可定制性著称。它兼容 Bash、Zsh、Fish、PowerShell 等主流 Shell,无需复杂配置即可获得美观且信息丰富的命令行提示符。
Starship 能自动检测当前目录的项目环境,智能显示 Git 分支状态、编程语言版本、包管理器信息、云服务上下文等。它采用异步渲染机制,即使在信息密集的场景下也能保持毫秒级的响应速度,不会拖慢你的命令行体验。
安装
# macOS
brew install starship
# Linux (通用安装脚本)
curl -sS https://starship.rs/install.sh | sh
# Cargo
cargo install starship --locked
安装后需要在 Shell 配置文件中添加初始化命令:
# Zsh (~/.zshrc)
eval "$(starship init zsh)"
# Bash (~/.bashrc)
eval "$(starship init bash)"
# Fish (~/.config/fish/config.fish)
starship init fish | source
核心特性
- 极速响应: Rust 编写,异步渲染,提示符刷新速度极快
- 跨 Shell 支持: 兼容 Bash、Zsh、Fish、PowerShell、Nushell 等
- 智能检测: 自动识别 Git 状态、语言版本、虚拟环境等上下文
- 高度可定制: 通过 TOML 配置文件自定义每一个模块的显示样式
- 预设主题: 内置多种预设配置,一键切换不同风格
使用示例
# 生成默认配置文件
starship config
# 使用预设主题
starship preset nerd-font-symbols -o ~/.config/starship.toml
starship preset tokyo-night -o ~/.config/starship.toml
# 查看当前提示符渲染耗时
starship timings
# 查看所有可用模块
starship module --list
# 自定义配置示例 (~/.config/starship.toml)
# [git_branch]
# format = "[$symbol$branch]($style) "
# symbol = " "
#
# [nodejs]
# format = "[$symbol($version)]($style) "
#
# [python]
# format = "[$symbol$pyenv_prefix($version)]($style) "
典型场景
场景一:跨 Shell 统一提示符风格
同时使用 zsh(日常)和 bash(脚本调试)时,starship 让两个 Shell 有完全一致的提示符:
# ~/.zshrc
eval "$(starship init zsh)"
# ~/.bashrc
eval "$(starship init bash)"
# ~/.config/fish/config.fish
starship init fish | source
# 现在 zsh、bash、fish 的提示符显示完全一致
场景二:智能显示项目上下文
进入不同项目目录时,starship 自动显示对应的语言版本和工具信息:
~/projects/backend ❯ # 普通目录
~/projects/backend ❯ v20.11.0 # Node.js 项目(有 package.json)
~/projects/ml-model ❯ 3.11.7 # Python 项目(有 requirements.txt)
~/projects/service ❯ 1.75.0 # Rust 项目(有 Cargo.toml)
~/projects/app main ❯ # Git 仓库(显示分支名)
~/projects/app main ❯ +2 !3 # Git 有 2 个暂存、3 个未暂存改动
场景三:性能调优——关闭不需要的模块
当某些目录检测导致提示符变慢时,针对性关闭模块:
# ~/.config/starship.toml
# 关闭不使用的语言检测(加速提示符渲染)
[ruby]
disabled = true
[php]
disabled = true
[java]
disabled = true
# 查看当前提示符各模块耗时
# 在终端运行:
# starship timings